Daha önce hiç ciddi bir Java kodlaması yapmadım, ancak mevcut becerilerime (Delphi & C #) dayalı olarak sözdizimini, kitaplıkları ve kavramları öğrendim. Anlayamadığım bir şey ise, bunun printStackTrace
gibi istisnaları sessizce tüketen çok fazla kod görmüş olmam :
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
e.printStackTrace();
}
}
Hemen hemen her Java makalesinde ve karşılaştığım projede buna benzer bir kod var. Bildiğim kadarıyla bu çok kötü. İstisna, hemen hemen her zaman şu şekilde dış bağlama iletilmelidir:
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
e.printStackTrace();
throw new AssertionError(e);
}
}
Çoğu zaman istisna, temel çerçeveye (örneğin Java Swing) ait olan en dış döngüde ele alınmalıdır. Java dünyasında böyle kodlama neden norm gibi görünüyor? Şaşırdım.
Geçmişime bağlı olarak, printStackTrace'i tamamen kaldırmayı tercih ederim . İşlenmemiş bir aka RuntimeException
(veya daha iyisi AssertionError
) olarak yeniden atar , sonra en uygun yerde yakalayıp kaydederdim : en dıştaki çerçeve döngüsü.
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
throw new AssertionError(e);
}
}