如果我在一個拋出異常的函數中有多個函數,如果它們互相依賴,那麼處理它們的最佳方法是什麼?多個異常拋出函數的異常處理實踐
相互依賴,我的意思是,如果拋出一個異常,拋出異常的函數之後的代碼應該被跳過。
我想通了三種方式來做到這一點:
異常嵌套
public void parent() {
someFunction();
}
public void someFunction() {
try {
function1();
try {
function2();
...
} catch (Func2xception e) {
System.out.println("Function 2 failed!");
}
} catch (Func1Exception e) {
System.out.println("Function 1 failed!");
}
}
回報例外
public void parent() {
someFunction();
}
public void someFunction() {
try {
function1();
} catch (Func1Exception e) {
System.out.println("Function 1 failed!");
return;
}
try {
function2();
} catch (Func2xception e) {
System.out.println("Function 2 failed!");
return;
}
...
}
添加例外方法簽名
public void parent() {
try {
someFunction();
} catch (Func1Exception e) {
System.out.println("Function 1 failed!");
} catch (Func2Exception e) {
System.out.println("Function 2 failed!");
} ...
}
public void someFunction() throws Func1Exception, Func2Exception {
function1();
function2();
...
}
我有時會把它們全部用在一起,這是一團糟。有沒有關於如何處理這種情況的良好做法?