已經有許多技術性的答案是JLS 1.2節,經過異常等,這說明了它的使用。
但你的問題
我應該什麼時候宣佈拋出一個異常,而當沒有,只是把它沒有宣佈呢?
如果您的代碼生成一些明確的異常,並拋出它,那麼你應該時時補充 throws子句,你應該僅通過寫生成文檔/**將產生的文檔標籤上面的函數您。 這將幫助所有誰使用資料庫或將某些功能或構造,勢必引發異常,如果一些無效參數或某些值尚未調用該函數之前初始化函數其他用戶。
例,
/**
*
* @param filePath File path for the file which is to be read
* @throws FileNotFoundException In case there exists no file at specified location
* @throws IllegalArgumentException In case when supplied string is null or whitespace
*/
public static void ReadFile(String filePath) throws FileNotFoundException, IllegalArgumentException
{
if(filePath == null || filePath == "")
throw new IllegalArgumentException(" Invalid arguments are supplied ");
File fil = new File(filePath);
if(!fil.exists()|| fil.isDirectory())
throw new FileNotFoundException(" No file exist at specified location " + filePath);
//..... Rest of code to read file and perform necessay operation
}
這些文檔標記,並拋出是而且使程序員的生活輕鬆誰將會重用代碼,並會提前知道拋出:IllegalArgumentException,FileNotFoundException異常會被拋出,如果功能與調用錯誤的參數或文件不可用在指定的位置。
所以,如果你希望你的代碼和函數是自我解釋的,並提供所有必要的情況下拋出什麼異常然後添加以下條款,否則它是你的選擇。
記住,如果在30天之後,如果你自己使用(我相信你會重新使用它不遠的將來)那些函數,那麼這將是更有益的,將會精確地只是通過這些條款明白我在那個功能上做了。
來源
2013-10-22 12:05:12
dbw