SORU
2 Mart 2009, PAZARTESİ


Bir sonunda bir yakalama olmadan bir java anti-desen blok blok mu?

Ben sadece bu gibi görünen bir kod sorun giderme sorun giderme oldukça acı verici bir deneyim oldu:

try {
   doSomeStuff()
   doMore()
} finally {
   doSomeOtherStuff()
}

Sorun zor doSomeStuff çünkü giderme() sırayla doSomeOtherStuff neden olan bir durum. () da bir istisna. İkinci istisna (tarafından atılan son blok) atılan benim kod, ama olmadı bir kolu ilk istisna (atılan gelen doSomeStuff()), hangisi gerçek kök-neden sorunu.

Eğer bu kod yerine şöyle olsaydı, sorun aşikar olurdu:

try {
    doSomeStuff()
    doMore()
} catch (Exception e) {
    log.error(e);
} finally {
   doSomeOtherStuff()
}

Yani, sorum şu:

Sonunda bir blok herhangi bir catch olmadan kullanılan iyi bilinen bir java anti-desen bloğu? (Kesinlikle belli ki çok iyi bilinen bir anti-desen-hazır-belli bir alt sınıf gibi görünüyor "istisnalar süpürmek Yok")!

CEVAP
2 Mart 2009, PAZARTESİ


Genel olarak, Hayır, bu anti-desen-bir değildir. Nihayet blokları emin şeyler yapmak noktasında bir özel durum olup olmadığını temizlenmiş olur. Bütün mesele bu istisna yönetimi, eğer anlaşma ile, size izin kabarcık kadar yapabilecek birini, nispeten temiz bant dışı sinyal özel durum işleme sağlar. Eğer bir şeyler varsa, bir özel durum temizlemiş olur, ama düzgün geçerli kapsamda istisna işleyebilir emin olmak için gerekiyorsa, o zaman bu tam olarak yapmak için doğru şey olduğunu. Sadece sonunda blok atmaz emin yapma konusunda biraz daha dikkatli olmak isteyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007
  • TheDigiCraft

    TheDigiCraft

    25 NİSAN 2011