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

  • Creavite

    Creavite

    8 Mart 2009
  • kidrauhl

    kidrauhl

    15 Ocak 2007
  • Stevie

    Stevie

    2 Mayıs 2010