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

  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • Perihelion

    Perihelion

    23 NİSAN 2008
  • UniqueApps

    UniqueApps

    4 Ocak 2009