Try-catch bloğu en sade şekilde ne demektir?

Bir geliştirici zaten hatanın nerede olduğu bilir.
Bilemeyebilir, karmaşık programlarda hatanın nereden geleceğini tahmin edemezsin. Belki de 100.000 satırlık bir uygulama yazıyorsun, her program 20 satırlık hesap makinelerinden ibaret değil ki.
 
Bir geliştirici zaten hatanın nerede olduğu bilir. Bunu neden try-catch alıyor hala anlamadım. Donduran, kapatan kod satırı neyse onunla ilgilenmez mi zaten?
Mesela kullanıcıdan alınan input hatalı. Bunu tespit etmek için kullanılabilir. Örneğin;
  • Sayı değeri isteyen bir program olsun.
  • Kullanıcı karakter içeren bir input girsin.
Bu nedenle kullanılabilir.
 
Çalışabilir. Syntax dışındaki diğer Exceptionlar programı durdurmasın diye try-catch kullanırsın.
Tamam try-catch ile bu durumu ortadan kaldırılır ama onun yerine hata veren satırı gözden geçirip düzeltmek daha mantıklı olmaz mı?
Bilemeyebilir, karmaşık programlarda hatanın nereden geleceğini tahmin edemezsin. Belki de 100.000 satırlık bir uygulama yazıyorsun, her program 20 satırlık hesap makinelerinden ibaret değil ki.
Ama try-catch'e hatalı olduğu bilinen kod satırı eklenmiyor mu?
 
Tamam try-catch ile bu durumu ortadan kaldırılır ama onun yerine hata veren satırı gözden geçirip düzeltmek daha mantıklı olmaz mı?
Zaten düzelteceksin, bu sadece programın yanıtsız kalmasını önlüyor. Try-catch ile yakaladığın hatayı kendi log tablona yazabilir veya mail atabilirsin. Böyle programındaki hataları takip edersin.
Ama try-catch'e hatalı olduğu bilinen kod satırı eklenmiyor mu?
Hayır, try-catchi hata olacağını bildiğin yere koymazsın. Mümkünse tüm kodunu try-catch'e koyarsın ki hataları yakala ve ona göre yönet.
 
Call-stack diye bir sey var. Once bunu ogrenmelisin. A B'yi cagirir, B C'yi cagirir vs.
Hata alindigi zaman bu hata stack uzerinde yukari dogru "firlatilir".
Sen Try blogu actigin zaman, ki bunu catch ile bitirmek zorunda degilsin, try-finally de kullanilabilir kimi dillerde; "Benden sonraki cagrilarda firlatilan hatalari bu blokta handle edebilirim" demis oluyorsun. Ne tarz hatalari handle edecegini de yazdiysan catch blogunda belirtirsin.
Futbolcularin hatalarini teknik direktor yakalar, teknik direktorun hatasini sportif direktor yakalar, sportif direktorun hatasini klup baskani yakalar. Boylelikle futbolcunun hatasinin klup baskanina kadar gitmesinin onune gecmis de olursun. Gereksiz mesgul etmezsin kimseyi :)

Kurguladigin hiyerarsiye gore hangi grubun hatasini hangi elemanin yakalayacagi programmerin kontrolunde.

OO disindaki paradigmalarda surec farkli isliyor. Try-catch yaklasimi her zaman dogru degil.
 
Mesela kullanıcıdan alınan input hatalı. Bunu tespit etmek için kullanılabilir. Örneğin;
  • Sayı değeri isteyen bir program olsun.
  • Kullanıcı karakter içeren bir input girsin.
Bu nedenle kullanılabilir.
Bunun için hep switch case kullandım da. Try-catch'e gerek duymadım pek. Arayüzde değişebilir ama.
 
Bunun için hep switch case kullandım da. Try-catch'e gerek duymadım pek. Arayüzde değişebilir ama.
İşte gelebilecek hatalara göre koşul yazmaya defensive programming diyebilirsin.

Ancak hataları programlama diline yüklemek de isteyebilirsin. Bu durumda try-catch blokları kullanırsın.
 
Arkadaşlar karmaşık bir şey.
Call-stack diye bir sey var. Once bunu ogrenmelisin. A B'yi cagirir, B C'yi cagirir vs.
Hata alindigi zaman bu hata stack uzerinde yukari dogru "firlatilir".
Sen Try blogu actigin zaman, ki bunu catch ile bitirmek zorunda degilsin, try-finally de kullanilabilir kimi dillerde; "Benden sonraki cagrilarda firlatilan hatalari bu blokta handle edebilirim" demis oluyorsun. Ne tarz hatalari handle edecegini de yazdiysan catch blogunda belirtirsin.
Futbolcularin hatalarini teknik direktor yakalar, teknik direktorun hatasini sportif direktor yakalar, sportif direktorun hatasini klup baskani yakalar. Boylelikle futbolcunun hatasinin klup baskanina kadar gitmesinin onune gecmis de olursun. Gereksiz mesgul etmezsin kimseyi :)

Kurguladigin hiyerarsiye gore hangi grubun hatasini hangi elemanin yakalayacagi programmerin kontrolunde.

OO disindaki paradigmalarda surec farkli isliyor. Try-catch yaklasimi her zaman dogru degil.
Şimdi Call-stack kavramını öğrenmeden önce bu hataları önceden bilmiyoruz galiba.
 

Yeni konular

Geri
Yukarı