據我所知,沒有辦法找到一個方法拋出哪些異常,而無需逐個查看API文檔。最常見的選中和未選中的Java異常?
自認爲是沒辦法,我想扭轉的研究和問你這是最常見的異常和RuntimeExceptions您遇到有問題時:
- 鑄造
- 陣列
- 矢量,ArrayList中,HashMap的,等
- IO(File類,流,過濾器,...)
- 對象序列化
- 線(wait()的,睡眠()等)
- 或其他任何被認爲是「基本的Java」
我意識到,這可能是主觀的,枯燥的,但它是一類測試我真的不知道更好。
據我所知,沒有辦法找到一個方法拋出哪些異常,而無需逐個查看API文檔。最常見的選中和未選中的Java異常?
自認爲是沒辦法,我想扭轉的研究和問你這是最常見的異常和RuntimeExceptions您遇到有問題時:
我意識到,這可能是主觀的,枯燥的,但它是一類測試我真的不知道更好。
假設下面是java.lang
除非我另有註明:
你會最好查看Java站點的Package Summary頁面。這裏有一個:http://java.sun.com/j2se/1.4.2/docs/api/java/io/package-summary.html
我從來沒有意識到,那裏確實有一個「例外總結」。謝謝! – 2009-08-11 22:01:02
(編輯使例外清單可讀) 沒問題,我只是偶然發現了它。這是多麼偉大,「當一個人教學,兩個學習」,呃? 對不起,以前是一個小snippy,我會編輯,以解決這個問題。 – 2009-08-11 22:08:31
嗨,剛剛嘗試過的鏈接發佈到包摘要,它不解決,有人知道新的位置? – Sizons 2015-06-07 14:53:19
經過異常是容易的,你的編輯器,當你將鼠標懸停/完成方法名應顯示的javadoc。
未檢查通常是實際的錯誤,甚至在javadocs中甚至沒有經常出現。我猜最常見的可能是IllegalArgumentException,任何具有任何可能的無效參數組合的方法都應該拋出它。
如果他使用的是文本編輯器,則不會在方法名稱完成時顯示javadocs。 :-( – 2009-08-11 21:53:58
我想你的意思是IllegalArgumentException。 – 2009-08-11 21:55:52
不要使用文本編輯器(相信我,我做了幾十年)。就像讓你的自行車輪胎因爲需要更多運動而排出空氣 – 2009-08-11 22:35:07
如何尋找java.lang.Exception的子類,例如here
我個人使用2檢查了我自己TransientException的例外情況下,當一個重試可能會奏效。用於驗證錯誤的InvalidRequestException。
NumberFormatException的
正如Bill K所說。檢查異常很容易。如果您的IDE /程序編輯器不能讓您快速查看方法javadoc或簽名,則需要將其丟棄。認真。
未經檢查的異常是不同的水壺。但我認爲最好的策略是不要試圖捕捉它們。相反,你寫你的代碼,以避免把它們放在第一位。例如;
// ... not sure if 'obj' is null
if (obj != null) {
obj.someMethod();
}
// ... not sure if 'obj' has the right type
if (obj instanceof Foo) {
Foo foo = (Foo) obj;
}
// ... not sure if 'i' is in range
if (i >= 0 && i < array.length) {
.... = array[i];
}
這也是爲什麼我建議這樣的:
// obj might be null ... try { obj.doSomething(); } catch (NullPointerException ex) { System.err.println("obj was null"); // WRONG!!! // the NPE could have happen inside doSomething() }
很明顯,你只包括這些「守衛」檢查,你對代碼的理解告訴你他們是必要的!所以,舉例來說,如果你知道'obj'應該是非空的,'我'應該在範圍內,那麼離開檢查是一個好主意。如果你遺漏了太多的測試,你會得到一個異常......但這很好,因爲你可以使用堆棧跟蹤來弄清爲什麼你對代碼的理解是錯誤的,並且可能修復潛在的錯誤。
非常全面的答案。 – 2009-08-12 14:22:04
java。郎鹹平:
java.util中:
java.io:
鑄造 - ClassCastException異常
陣列 - ArrayIndexOutOfBoundsException異常
載體,ArrayList中,HashMap的,等等 - 我很少看到有異常Java集合工作時,卻非常偶然ConcurrentModificationException的
IO(File類,流,過濾器,... ) - FileNotFoundException異常
對象序列化 - ClassNotFoundException的
線(wait()的,睡眠(),等) - 在我的經驗用通常,線程問題以隨機的方式表現出來,這些方式並不是特例。必須處理InterruptedException會佔用很多時間,但我沒有看到實際拋出的異常。
或其他被認爲是「基本Java」的東西 - 迄今爲止,我的經驗中最常見的異常是NullPointerException。
未經檢查的例外列表
ArrayIndexOutOfBoundsException異常
ClassCastException異常
拋出:IllegalArgumentException
IllegalStateException異常
的NullPointerException
NumberFormatException的
的AssertionError
的ExceptionInInitializerError
的StackOverflowError
NoClassDefFoundError的
經過例外列表
異常
IOException的
FileNotFoundException異常
ParseException的
ClassNotFoundException的
CloneNotSupportedException的
InstantiationException
InterruptedException的
NoSuchMethodException
NoSuchFieldException
對於檢查的異常來說不是真的,方法定義了它可能拋出的異常。對於所有其他人(比如NPE) - 他們沒有被選中是有原因的。 – Gandalf 2009-08-11 21:50:00
您可以使用BCEL或ASM來解析二進制文件,並遍歷每種方法中的代碼以找到答案。 – 2009-08-12 04:00:28