回答
- 的
try
塊將執行一個敏感的代碼可以拋出異常 - 每當(捕獲的類型)的異常在try塊
- 的
finally
塊被稱爲時引發的catch
塊將被用於在之後,每隔之後try/catch塊。即使未捕獲到異常,或者以前的塊會中斷執行流程。 throw
關鍵字將允許您拋出一個異常(這將會中斷執行流程並可以在catch
塊中捕獲)。- 方法原型中的
throws
關鍵字用於指定您的方法可能會拋出指定類型的異常。當你檢查異常(你必須處理的異常)時,它是非常有用的,你不想在當前的方法中捕獲異常。
資源:
在另一方面,你應該接受一些答案。如果有人遇到同樣的問題並找到問題,他/她會很樂意直接看到問題的正確答案。
您沒有解決* throws *子句。我需要你這樣做,以便當他接受我的答案時,我可以將他推薦給你:) – Dave 2010-09-25 18:24:33
@Dave,將做:P – 2010-09-25 18:30:01
Try/catch和throw子句用於不同的目的。所以它們不是彼此替代的,但它們是互補的。
如果你扔在你的代碼中的一些檢查異常,應該在調用層次代碼一些try/catch語句內。
相反,只有在代碼(代碼或API調用)中有拋出檢查異常的throw子句時,才需要try/catch塊。
有時候,你可能要拋出異常,如果特殊情況發生,你要在調用代碼塊來處理,並在某些情況下,處理一些異常catch塊,然後再次拋出一個相同或不同的異常呼籲塊來處理。
如果執行下面的例子,您將會知道Throw和Catch塊之間的區別。
總體而言:
的捕捉塊將處理這個異常
拋出將錯誤傳遞給他的調用者。
在以下示例中,在throwsMethod()發生錯誤,但它是在catchMethod()處理。
public class CatchThrow {
private static void throwsMethod() throws NumberFormatException {
String intNumber = "5A";
Integer.parseInt(intNumber);
}
private static void catchMethod() {
try {
throwsMethod();
} catch (NumberFormatException e) {
System.out.println("Convertion Error");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
catchMethod();
}
}
例如,如果將「private static void throwsMethod()throws NumberFormatException」更改爲「私人靜態無效throwsMethod()拋出IndexOutOfBoundsException「,它會產生相同的結果。 – 2015-08-23 14:24:59
嘗試 - 添加敏感的代碼 捕獲 - 處理異常 最後 - 始終執行異常是否陷入與否。與try -catch相關聯。用於關閉我們在嘗試塊 中打開的資源throw - 將手動創建的異常切換到JVM。用於拋出自定義的異常 throws - 將異常處理的責任委託給調用者方法或主方法。
所有這些關鍵字try,catch和throw都與java中的異常處理概念有關。例外是執行程序期間發生的事件。異常會破壞應用程序的正常流程。異常處理是一種用於處理異常的機制,以便可以保持正常的應用程序流。 Try-catch塊用於處理異常。在try塊中,我們編寫可能拋出異常的代碼,並在catch塊中編寫處理該異常的代碼。 Throw關鍵字用於顯式拋出異常。通常,throw關鍵字用於拋出用戶定義的異常。
欲瞭解更多詳情,請訪問Java tutorial for beginners。
其他人已經給出了全面的答案,但如果您需要更多信息,Oracle Java教程始終是一個很好的資源。以下是Exceptions的Java教程,其中詳細介紹了您的所有問題; https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html
- 1. Java中的throw和throws之間的區別?
- 2. 在java中TryCatch塊
- 3. throw和console.log與catch中的承諾的區別
- 4. java中+ =和= +的區別?
- 5. 在java中`InputStream``DataInputStream`和`BufferedInputStream`的區別?
- 6. %(模數)和/(分)在java中的區別?
- 7. throw關鍵字在Java中
- 8. 「throw」關鍵字和「Write-Error-ErrorAction Stop」之間有什麼區別?
- 9. 聲明函數作爲__attribute __(nothrow)和`throw()`有什麼區別?
- 10. `|。有什麼區別? `和`|| `在java中?
- 11. !=和=!有什麼區別!在Java中?
- 12. 在java中x ++和++ x有區別嗎?
- 13. Java:.nextLine()和.nextDouble()的區別
- 14. Java getProgress()和getNewValue()的區別
- 15. Java中的圖像和BufferedImage的區別
- 16. Java中的StringBuilder和C#的區別
- 17. java中addItem和insertItemAt方法的區別
- 18. java中char(int)和int的區別
- 19. Java中mouseListener和mouseMotionListener的區別?
- 20. Scala和Java中的RoundingMode.HALF_UP區別
- 21. java rx中Observable.defer和Observable.create的區別
- 22. Java中Set和HashSet的區別
- 23. Java中= +和+ =之間的區別?
- 24. Java中this.variable和variable之間的區別
- 25. Java中{}和{{}}初始化的區別
- 26. java中Executor和ExecutorCompletionService之間的區別
- 27. Java EE中JspWriter和PrintWriter的區別?
- 28. tryCatch和ggplot
- 29. java項目和java包的區別
- 30. java bean和java類的區別?
@ user393043,您是否查閱了文檔並且仍然感到困惑?或者你甚至沒有看過第一個文檔? – 2010-09-25 18:08:53
Docs?什麼文件? :-P – 2010-09-25 18:09:49
可能重複[拋出或嘗試捕獲](http://stackoverflow.com/questions/3203297/throws-or-try-catch) – 2010-09-25 18:23:21