Saya telah mendengar bahwa pernyataan try-catch bersarang sering kali merupakan bau kode, jadi saya bertanya-tanya apakah situasi ini merupakan pengecualian. Jika tidak, apa cara yang baik untuk refactor?
Kode saya terlihat seperti berikut:
try{
X x = blah;
otherStuff;
for (int i = 0; i < N; i++){
try{
String y = Integer.toString(i);
f(x);
}
catch(Exceptions1 e1){
System.err.println(... + y + ...);
System.exit(0);
}
}
catch(Exceptions2 e2){
...
}
Saya menggunakan di Exceptions
sini untuk menunjukkan tangkapan multi.
e2
digunakan untuk menangkap pengecualian yang dilontarkan dengan menginisialisasi x
dan melakukan otherStuff
. Idealnya, saya hanya akan memiliki surround try-catch saya hanya dua baris, tetapi saya menggunakan x
dalam loop saya dan ingin menghindari peringatan "tugas yang tidak terpakai" yang disebabkan oleh inisialisasi ke nol di luar try-catch.
e1
tidak multi-tertangkap dengan e2
karena saya ingin memberikan pengguna dengan informasi tentang detail iterasi dan dengan demikian ingin menangkap blok di dalam loop.