我有類似這個偽代碼的代碼:
void doSomething(int data) throws Exception{
if(data < 10) throw new Exception("Exception thrown"); // throws an exception based on a condition
else { ... } // logic goes here
}
當我嘗試在主函式中呼叫 doSomething 時,它給了我一個錯誤:
public static void main(){
doSomething(11); // Error! unreported exception
}
這是上一個示例的鏈接。
所以我必須執行以下操作之一:
- 在每個 doSomething 呼叫周圍添加一個 try catch 塊
- 在 main 中添加 throws 陳述句
- 去掉 doSomething 中的 throws 陳述句
- 使條件成為先決條件,以便不遵循它會導致未定義的行為或類似的事情。
3 將不起作用,因為 doSomething 在客戶端使用時可能會拋出例外。1 和 2 只是多余的,我認為應該避免它們。
最后,4 對我來說是最吸引人的(主要是 C 編碼員),但與 Java 編程背道而馳。
我的問題是:上述選項(或任何其他選項)中的最佳方法是什么,實作它的最佳方法是什么?
uj5u.com熱心網友回復:
這實際上取決于您正在使用的背景關系。
如果您希望代碼在拋出例外的那一刻停止執行,您可以使用運行時例外,您不必捕獲它們。
好的用例是 REST 端點。如果在回應計算程序中出現問題,我們可以拋出ResponseStatusException- 運行時例外,它將立即將 Http 回應錯誤回傳給客戶端并停止代碼的任何進一步執行。
相反,如果您有一個即使拋出例外也必須執行的邏輯,最好的方法是使用 try-catch 塊,或者在方法宣告中添加 throws 陳述句并在父方法中添加 try-catch。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324117.html
