2010-09-25 57 views
41

try-catch和throw子句有什麼區別?何時使用這些?try-catch和throw在java中的區別

請讓我知道。

+2

@ user393043,您是否查閱了文檔並且仍然感到困惑?或者你甚至沒有看過第一個文檔? – 2010-09-25 18:08:53

+5

Docs?什麼文件? :-P – 2010-09-25 18:09:49

+0

可能重複[拋出或嘗試捕獲](http://stackoverflow.com/questions/3203297/throws-or-try-catch) – 2010-09-25 18:23:21

回答

63
  • try塊將執行一個敏感的代碼可以拋出異常
  • 每當(捕獲的類型)的異常在try塊
  • finally塊被稱爲時引發的catch塊將被用於在之後,每隔之後try/catch塊。即使未捕獲到異常,或者以前的塊會中斷執行流程。
  • throw關鍵字將允許您拋出一個異常(這將會中斷執行流程並可以在catch塊中捕獲)。
  • 方法原型中的throws關鍵字用於指定您的方法可能會拋出指定類型的異常。當你檢查異常(你必須處理的異常)時,它是非常有用的,你不想在當前的方法中捕獲異常。

資源:


在另一方面,你應該接受一些答案。如果有人遇到同樣的問題並找到問題,他/她會很樂意直接看到問題的正確答案。

+0

您沒有解決* throws *子句。我需要你這樣做,以便當他接受我的答案時,我可以將他推薦給你:) – Dave 2010-09-25 18:24:33

+0

@Dave,將做:P – 2010-09-25 18:30:01

5

Try/catch和throw子句用於不同的目的。所以它們不是彼此替代的,但它們是互補的。

  1. 如果你扔在你的代碼中的一些檢查異常,應該在調用層次代碼一些try/catch語句內。

  2. 相反,只有在代碼(代碼或API調用)中有拋出檢查異常的throw子句時,才需要try/catch塊。

有時候,你可能要拋出異常,如果特殊情況發生,你要在調用代碼塊來處理,並在某些情況下,處理一些異常catch塊,然後再次拋出一個相同或不同的異常呼籲塊來處理。

26

如果執行下面的例子,您將會知道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(); 
} 

} 
+0

例如,如果將「private static void throwsMethod()throws NumberFormatException」更改爲「私人靜態無效throwsMethod()拋出IndexOutOfBoundsException「,它會產生相同的結果。 – 2015-08-23 14:24:59

-1

嘗試 - 添加敏感的代碼 捕獲 - 處理異常 最後 - 始終執行異常是否陷入與否。與try -catch相關聯。用於關閉我們在嘗試塊 中打開的資源throw - 將手動創建的異常切換到JVM。用於拋出自定義的異常 throws - 將異常處理的責任委託給調用者方法或主方法。

3

所有這些關鍵字try,catch和throw都與java中的異常處理概念有關。例外是執行程序期間發生的事件。異常會破壞應用程序的正常流程。異常處理是一種用於處理異常的機制,以便可以保持正常的應用程序流。 Try-catch塊用於處理異常。在try塊中,我們編寫可能拋出異常的代碼,並在catch塊中編寫處理該異常的代碼。 Throw關鍵字用於顯式拋出異常。通常,throw關鍵字用於拋出用戶定義的異常。

欲瞭解更多詳情,請訪問Java tutorial for beginners