Tôi đã nghe nói rằng các câu lệnh thử bắt lồng thường có thể là một mùi mã, vì vậy tôi tự hỏi liệu tình huống này có phải là một ngoại lệ hay không. Nếu không, một số cách tốt để tái cấu trúc là gì?
Mã của tôi trông như sau:
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){
...
}
Tôi đang sử dụng Exceptions
ở đây để chỉ một đa bắt.
e2
được sử dụng để bắt ngoại lệ ném bằng cách khởi tạo x
và làm otherStuff
. Lý tưởng nhất là tôi chỉ có hai lần thử bắt xung quanh hai dòng đó, nhưng tôi sử dụng x
trong vòng lặp của mình và muốn tránh các cảnh báo "chuyển nhượng không sử dụng" gây ra bằng cách khởi tạo thành null bên ngoài bắt thử.
e1
không bị bắt e2
bởi vì tôi muốn cung cấp cho người dùng thông tin về các chi tiết lặp và do đó muốn có một khối bắt trong vòng lặp.