"Merhaba, Amigo!"

"Merhaba Ellie! Hayat nasıl?"

"Harika, teşekkür ederim. Nasılsın?"

"Harika, bu sabah bana tonlarca yeni şey açıklandı."

"Bu harika. Yorgun değil misin?"

"Evet, işte bu. Biraz yorgunum."

"O zaman şanslısın. Bugün büyük, karmaşık bir konuyu ele almak istedim ama son anda fikrimi değiştirdim ve küçük, kolay bir konuyu ele almaya karar verdim."

"Küçük ve kolay mı? Ben hazırım."

"Bugün İstisnalar konusunu ayrıntılı olarak inceleyeceğiz ."

"Hata yönetiminden mi bahsediyorsun?"

"İstisnaları hata olarak düşünmemelisiniz. İstisnalar daha çok 'beklenmedik bir şey oldu' raporları gibidir. Bu raporlara dayanarak alternatif eylemler önerebilirsiniz."

"Her şey yöntemlerle ilgili.  Bir yöntemi çağırdığınızda, yapması gereken şeyi yapmayı vaat ediyor. "

"Bir yöntem, hangi nedenle olursa olsun, çağrıldığı şeyi yapamıyorsa, arayana haber vermelidir."

"Başka bir deyişle, olabilecek en kötü şey, bir yöntemin işini yapmaması ve bundan kimseye bahsetmemesidir. Bundan daha kötü bir şey olamaz. Bu olduğunda, durumun kontrolünü kaybedersiniz. "

"Yeni bir programcı olduğunuzda, yalnızca yöntemleri çağırıyormuşsunuz gibi görünüyor ve onlardan yapmalarını istediğiniz şeyi yapacaklarından eminler."

"Deneyimli bir programcı olduğunuzda, bir yöntemin işini yapma yeteneğini etkileyen düzinelerce faktör olabileceğini ve bir yöntemin işini tamamlamasını engelleyebilecek pek çok durum olduğunu bilirsiniz."

"Programcının bakış açısına göre, bir programın bir hatayla karşılaştığında sona ermesi, programın bir hatayla karşılaşıp ardından kullanıcı ne olduğunu anlamadan (yanlış bir şekilde) çalışmaya devam etmesinden bin kat daha iyidir."

"Yani programın yanlış bir şey göstermesi, programın kapanıp tüm verileri kaybetmesinden daha kötü olabilir?"

"Programın bir şeyi yanlış gösterdiğini size düşündüren nedir? Belki programlarda çok fazla hata vardır ve tüm verileriniz geri alınamayacak şekilde kaybolacaktır? Farz edin 3 saat boyunca metin yazdınız, ancak hiçbiri kaydedilmeyecek çünkü bir sadece iki dakika sonra oluşan hata."

"Acemi bir programcı istisnalarla karşılaştığında hayal kırıklığına uğrar."

"Ama gerçekte, istisnalar öngörmesi gereken ama öngörmediği tüm olası senaryoları ortaya koyuyor."

"İstisnaları işlememeyi seçebilirsiniz ve bu sizi kötü bir programcı yapar. Ancak yöntemleriniz istisnalar oluşturmazsa, o zaman programcı değilsiniz demektir - çünkü bu basit gerçeği anlamadınız:"

"bir yöntem ya yazıldığı şeyi yapar ya da bir istisna atar. Üçüncü bir seçenek yoktur!"

"Tamam, sana inanıyorum. İstisnaları kullanacağıma söz veriyorum."

"Harika. O halde size istisnalar hiyerarşisinden bahsetmeme izin verin:"

İstisna hiyerarşisi, hatalar - 1

"İstisna hiyerarşisi dört sınıfa dayalıdır."

"En düşük temel sınıf, Atılabilir'dir ."

" Hata ve İstisna sınıfları onu devralır."

" RuntimeException, İstisnayı devralır ."

" Hata sınıfı, StackOverFlow , OutOfMemory , ..." gibi JVM hataları için temel sınıftır.

"Bir program genellikle bu tür hatalardan kurtulamaz ve bu da programın sonlandırılmasına neden olur."

"Aslında, programın normal şekilde çalışmaya devam etmesi için yeterli bellek yoksa veya bir yığın taşması olmuşsa ne yapılabilir?"

" İstisna , bir program tarafından oluşturulan tüm olağan istisnalar için temel sınıftır.  RuntimeException, biraz farklı kuralları olan özel bir İstisna türüdür ."

"Onlar neler?"

"Şimdi açıklayacağım şey de bu."

"Muhtemelen hatırladığınız gibi, istisnalar iki kategoriye ayrılır: işaretli ve işaretsiz ."

"Bir yöntem işaretli istisnalar atarsa , o zaman onu çağıran yöntem çağrıyı bir try-catch bloğuna sarmalı. Peki, ya öyle yapın ya da yöntem imzasında atışları açıkça belirterek istisnayı (arayana) yeniden atın ."

"Bu kurallar/kısıtlamalar, denetlenmeyen istisnalar için geçerli değildir."

"Bu nedenle, İstisna'yı devralan tüm istisnalar kontrol edilmiş olarak kabul edilir. RuntimeException'ı devralan ve kontrol edilmeyen istisnalar dışında."

"Hı hı. Bana daha önce buna benzer bir şey söylediğini hatırlıyorum."

"Amigo! Her röportajda istisna hiyerarşisini soruyorlar . Tekrar söyleyeceğim - her röportajda . Bu konuyu çok iyi bilmen gerekiyor."

"Tamam. Her şeyi tekrar okuyup çözeceğim. Bana yardım ettiğin için teşekkürler Ellie."