Önce size bir örnek vereceğim (ama en sonunda tartışmanın nedeninin cevabı).
Bir belgeyi Java tabanlı bir belge düzenleyicide düzenlediğinizi varsayalım ve işiniz bittikten sonra Dosya-> Farklı kaydet ... seçeneğini seçtiniz ve belgeyi yazma izniniz olmayan bir birime kaydetmeyi seçtiniz. Editör çirkin bir yığın iziyle size çökmez, sadece dosyayı kaydedemediğini söyler ve düzenlemeye ve / veya başka bir yere kaydetmenize izin verir.
Böyle bir durumda, muhtemelen kontrol edilen bir istisna beklenir, yakalanır ve ondan nezaketle iyileşmek için harekete geçer.
Öte yandan, bunları sıfırla bölmeyi veya çirkin kafasını sadece belirli koşullarda ortaya çıkaran bir programlama hatasının neden olduğu boş gösterici istisnasını varsayalım. Bu kodun herhangi bir yerinde olabilir, RAM bozulabilir, vb. Hiçbir API dokümanı size "RAM bozulursa bu yöntem sıfıra bölme atacağını" söyleyemez .
İşaretli istisnalar tasarımın bir parçası olmalı ve söz konusu API'nın kullanıcıları bunları ele almaya hazırlanmalıdır. Kontrol edilmeyen istisnalar hemen hemen her yerde olabilir ve bizim kontrolümüz dışındadır.
Tartışma, kontrol edilen istisnaları kullanmaları gerektiğinde kontrol edilmeyen istisnalar (RuntimeException'dan uzayan) kullanan programcılardan kaynaklanır :
- derleyici tarafından rahatsız edilmemek için bir kısayol olarak
- imzalarını daha basit göstermek için
- çünkü kontrol edilen istisnaların bir bağımlılık sorunu (uygulama sınıfına yeni bir kontrol edilen istisna atarsanız arayüzün imzasını değiştirmeniz gerekir) ve viceversa olduğunu düşünürler.