2013-02-11 43 views
1

我正在研究一個Java程序,我想知道在Eclipse中是否有一些工具會指出所有引發異常的方法。我只是想確保我得到了他們所有的人。顯示拋出異常的所有函數

感謝您的幫助,

+0

尋找編譯器錯誤。每當你錯過了這些東西,編譯器都會幫助你。 – 2013-02-11 23:12:39

+0

通常的「查找用法」工具可能會對您有所幫助。也就是說,這是在Java中檢查異常的原因。 – millimoose 2013-02-11 23:14:43

回答

0

首先,搜索關鍵字。 'throw'關鍵字將用於檢測錯誤條件或不能處理某種異常的代碼,而'throws'則是聲明它們傳遞某些異常的方法。

Eclipse可能無法找到所有引發異常的方法,因爲運行時異常不需要在'throws'子句中聲明,並且可能會由庫調用引發,在這種情況下,您不會找到'throw 「要麼。

+0

你能舉個例子嗎? 可以這樣說:String s =「1」 int i = Integer.parseInt(s); 我會如何發現它拋出?我只是想確保所使用的所有方法在拋出時捕獲異常,並且我不知道所有拋出的方法。 – dannyn382 2013-02-12 01:29:45

0

如果您忘記抓取已檢查異常(擴展爲Exception),則代碼將無法編譯。如果你忘記抓取未檢查的異常(擴展爲RuntimeException),那通常是更好的方法。 Read Up

0

如果您的程序在主方法(初始執行上下文)中捕獲到異常,您將被通知是否有某個異常被拋出但未處理。

public static void main(String[] args) { 
    try { 
     // .... anything you want to do 
    } catch(Exception e) { 
     e.printStackTrace(); // useful to visualize the stack trace and ping point others places to catch exceptions 
    } catch(Throwable t) { 
     // if you want to check for errors also, but generally there isn't much to do in this case 
    } 
} 

一個側面說明,因爲Java的實現檢查(異常)的異常概念和未選中的RuntimeException),是強制性的,以對付檢查,這將通知相應的程序應該嘗試異常/捕獲/終於。但未經檢查通常會通知情況表明有錯誤,應避免使用良好的做法和防禦性編程,因此您不必處理它。

1

檢查異常必須被捕獲,所以Eclipse會告訴你它們。另一方面,未經檢查的異常(又名RuntimeException)是「不應該發生」,它大部分時間是編程問題。因此,Java不需要捕捉它們,而且AFAIK Eclipse將不會顯示任何提示,告訴您潛在的問題(可能對可見性更好)。

您可以閱讀Unchecked Exceptions — The Controversy,這是一篇文章,其中Oracle提供了關於未檢查異常的狀態。

如果您想自己構建一些東西,請查看RuntimeExceptionDirect Known Subclasses,它可以幫助您識別可以拋出而不被捕獲的異常。

+0

感謝您的幫助!我知道這不應該發生,只是試圖確保在這種情況下,我處理了它們。看起來我需要確保檢查我使用的每種方法!謝謝! – dannyn382 2013-02-12 19:05:26

+0

@ dannyn382不客氣。現在的問題是:花時間處理所有異常還是花時間確保您的方法不會引發這些異常更好? :) – 2013-02-13 10:20:56

+1

明確同意你的意見。花時間確保我不會拋出異常真是更好。我想我只是把它想成更多的一個「如果我不得不以任何理由這樣做,你會怎麼做?」看到我只是在學習。再次感謝! – dannyn382 2013-02-13 20:25:18