İstisnalar (exceptions) — Java'daki hata işleme mekanizmasıdır. Fırlatılan her nesne Throwable sınıfından türetilmiştir. İki ana kategori vardır:
Exception alt sınıfları, RuntimeException hariç): açıkça işlenmeli veya yöntemin imzasında throws ile belirtilmelidir.RuntimeException alt sınıfları): açıkça işlenmesine gerek yoktur, her yerde oluşabilir (örneğin, NullPointerException).Ne zaman kullanılır?
public void readFile(String path) throws IOException { // Checked exception — işleme gerektirir Files.readAllLines(Paths.get(path)); } public void divide(int a, int b) { int c = a / b; // Unchecked — ArithmeticException }
throws ile beyan edilmemiş bir yöntem, checked exception fırlatabilir mi?
Cevap: Hayır, derleyici throws ile beyan edilmeden checked exception fırlatılmasına izin vermez. Ancak unchecked exception, herhangi bir uyarı olmadan fırlatılabilir.
void foo() { throw new IOException(); // Derleme hatası }
Hikaye
İnternet bankasında, müşteri
SQLExceptionsişlemesini göz ardı etmeye karar verdi ve unchecked sarmalayıcılar kullandı. Bu nedenle, sürücünün güncellenmesi sırasında görünmez hatalar veri senkronizasyonunun bozulmasına neden oldu.
Hikaye
Kayıt uygulamasında, log dosyası, çağrı zincirinde "kaybolan" işlenmemiş checked exception (
FileNotFoundException) nedeniyle kilitli kaldı; hata zamanında işlenmedi ve uygulama loglara yazmaya devam edemedi.
Hikaye
Ticaret platformunda, ekip "asla çökmemek" için küresel bir catch(Throwable) uyguladı. Sonuç olarak, kritik unchecked-exception'lar göz ardı edildi — uygulama tutarsız durumda çalışmaya devam etti ve karmaşık hatalar ve veri kaybına yol açtı.