Oracle Java eğitiminde neden "tartışma" olarak adlandırılan denetlenmeyen ve denetlenmeyen istisnalar denetleniyor?


10

Java için yeniyim ve istisnalarla ilgili belgelerini okuyordum . ve özellikle Denetlenmeyen İstisnalar - Tartışma sayfası.

Sonuç olarak:

Bir istemcinin bir istisnadan kurtarması makul olarak isteniyorsa, denetlenen bir istisna yapın. İstemci özel durumdan kurtarmak için hiçbir şey yapamazsa, denetlenmeyen bir özel durum haline getirin.

Makaleyi anlamıyorum. "Tartışma" ne hakkında? Basit kelimelerle açıklayabilir misiniz?




Lütfen güncellenen soruyu görün, bunun bir kopya olduğunu hissetmiyorum :)
ABcDexter

3
"Ben okumaya çalıştım" - ne oldu?
Yararsız

2
Buna böyle denir, çünkü bu konuda çok fazla tartışma var. Ayrıca bu StackOverflow sorusuna bakın: Ünlü / etkili kişilerin birkaç alıntısından bahseden kontrol edilen istisnalara karşı dava
Hulk

Yanıtlar:


3

Ö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.

“arayüzün imzasını değiştirmelisiniz” - yani, derleyici tarafından bunu yapmak zorunda kalırsınız ve her çağrı sitesine atıldığını bildirmeniz veya bildirmeniz gerekir.
Hulk

3
Bir UI uygulamasının bir hatayı kullanıcı dostu bir şekilde düzgün bir şekilde işlemesi, programcının kodu ne kadar iyi yazdığına bağlıdır. Kodu, başka birinin kontrol edilen istisnalarla yanlış bir şekilde işleyememesi gibi, işaretlenmemiş istisnalar ile bu şekilde iyi yazabilirler. Kontrol edilen istisnaların amacı , programcıların hataları düzgün bir şekilde ele almasını kolaylaştırmaktır. Tartışma burada iddia ettiğiniz şey değil, hata işlemeyi gerçekten kolaylaştırma hedefini gerçekten başarıyla gerçekleştirip gerçekleştirmedikleri. Birçoğunun görüşüne göre; zorlaştırıyorlar.
Servy

@Servy Bir kullanıcı arabirimi uygulaması, başarısız bir RAM yongası veya başka bir yazılımın arızalanması nedeniyle CPU döngüsü olmadan bırakılması gerçeğini hangi kullanıcı dostu şekilde ele alabilir?
Tulains Córdova

1
@ TulainsCórdova Her iki durumda da program çalışmayacak bile , bu nedenle bir istisna işleme süresi yok, bu yüzden herhangi bir hata bile çalıştıramadığınızda bir hatayı nasıl temsil etmeye çalıştığınız önemsizdir. kod geldiğinde.
Servy

1
@ TulainsCórdova Sorunla başa çıkmak için mutlaka hatayla karşılaşmanız gerekmez, ancak evet, derleyici atılabileceğini söylemez. Anlaşmazlık, derleyicinin istisnanın atılabileceğini söyleyen gerçekten yararlı olup olmadığıdır. Bazıları bunun olduğunu düşünüyor, bazıları bunun olmadığını düşünüyor. Buradaki soru , tartışmanın ne olduğu ve cevap bu. Kontrol edilen istisnaların temel tartışmasının ne olduğuna dair ifadeniz değil.
Servy

-4

Bu sayfada herhangi bir tartışma yoktur. Oracle, insanlara işaretli istisnaları kullanmalarını söylüyor.

Burada icat ettikleri sahte 'tartışma' dil tasarımcıları ve dil kullanıcıları arasında. Tasarımcılar insanların (akıllarında) atılmaması veya yakalanmaması gereken şeyleri atmasına ve yakalamasına izin verdi. Böylece tembel geliştiriciler hakkında şikayet eden bir web sayfası oluşturdular.


4
Orada olan söz konusu sayfa bu konuda çok az diyor bile tartışma. "Kontrol edilen istisnalar daha iyi yazılımların geliştirilmesine yardımcı oluyor mu yoksa engelliyor mu?" Sorusunun cevabı tartışmalı olan nedir? Ve "Varsa, hangi istisnalar kontrol edilmeli ve hangileri işaretlenmemeli?" Bu soruları cevaplamak için bir odada yeterli geliştirici (ve bira) varsa, canlı bir tartışmaya başlayabileceğinizden bahse girerim.
Solomon Slow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.