ProgramlamaBackend Java geliştirici

Java'da istisna (exceptions) nedir? Checked ve unchecked exceptions arasındaki farkı açıklayın ve hangi kategorinin ne zaman kullanılacağını belirtin.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

İ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:

  • Checked exceptions ( Exception alt sınıfları, RuntimeException hariç): açıkça işlenmeli veya yöntemin imzasında throws ile belirtilmelidir.
  • Unchecked exceptions ( RuntimeException alt sınıfları): açıkça işlenmesine gerek yoktur, her yerde oluşabilir (örneğin, NullPointerException).

Ne zaman kullanılır?

  • Checked — işlenebilecek beklenen hatalar için (örneğin, dosya, ağ hataları).
  • Unchecked — yazılım hatalarını gösteren hatalar için (örneğin, yanlış dizi indeksi).
Kod örneği
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 }

Kandırmaca soru

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ı }

Konuyla ilgili incelikleri bilmemekten kaynaklanan gerçek hata örnekleri


Hikaye

İnternet bankasında, müşteri SQLExceptions iş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ı.