2016-03-31 26 views
2

Bir istisna atmak ve sadece baskı hatası yapmak için onu yakalamak yeterli midir?İstisnalar - Hemen atın ve yakalayın

if(...){ 

} else { 
    try{ 
     throw new Exception(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
+1

Sanırım bu duruma bağlı. İstisnalar atmanın pahalı olduğunu ve sadece bir kullanıcıya bir hata mesajı yazdırıyorsanız, basit bir 'System.err.println (...)' yeterli olabilir. –

cevap

3

atmak-ve-yakalamak için gerek yok, sadece çağırabilir

Thread.dumpStack(); 

Ayrıca, bir güncel iplikten yığın izleme alabilirsiniz dizi:

StackTraceElement[] trace = Thread.currentThread().getStackTrace(); 

Yığını çalışma zamanında incelemek gibi daha ayrıntılı bir şey yapmak isterseniz (örn. e çağrı yönteminin adı.

0

Ben açıkça (catch bloğuna) bir LOGGER bir günlük dosyasına özel durum göndermek istemeniz durumunda yararlı olabilir, ya da bir especific bir şekilde kayıt olabileceğini düşünüyorum.

new Exception().printStackTrace(); 

ya da kolay:

+0

Bu nedenle e.printStackTrace() işlevi mantıklıdır, çünkü bu işlem günlüğe kaydeder mi? –

+0

Hayır, bu işlem günlüğüne iz bırakmaz, ancak Logger.error ("Hata:", e) gibi bir şeyle catch bloğunuzu değiştirebilir, bu istisnayı Logger dosyanıza kaydettirebilirsiniz. – Wakachopo