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 xvà 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 xtrong 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ử.
e1không bị bắt e2bở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.