Joshua Bloch は「Effective Java」で次のように述べています。
回復可能な条件にはチェック例外を使用し、プログラミング エラーには実行時例外を使用します (第 2 版の項目 58)。
これを正しく理解しているかどうか見てみましょう。
チェックされた例外についての私の理解は次のとおりです。
try{
String userInput = //read in user input
Long id = Long.parseLong(userInput);
}catch(NumberFormatException e){
id = 0; //recover the situation by setting the id to 0
}
1. 上記はチェック済み例外と見なされますか?
2. RuntimeException は非チェック例外ですか?
未チェックの例外についての私の理解は次のとおりです。
try{
File file = new File("my/file/path");
FileInputStream fis = new FileInputStream(file);
}catch(FileNotFoundException e){
//3. What should I do here?
//Should I "throw new FileNotFoundException("File not found");"?
//Should I log?
//Or should I System.exit(0);?
}
4. さて、上記のコードもチェック済み例外ではないでしょうか? このような状況を回復しようとすることができますか? できますか?(注:私の3番目の質問はcatch
上記の中にあります)
try{
String filePath = //read in from user input file path
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
}catch(FileNotFoundException e){
//Kindly prompt the user an error message
//Somehow ask the user to re-enter the file path.
}
5.なぜ人々はこれを行うのですか?
public void someMethod throws Exception{
}
なぜ彼らは例外をバブルアップさせたのですか? エラー処理は早いほうがいいのではないですか? なぜ泡立つのですか?
6. 正確な例外をバブルアップするか、Exception を使用してマスクする必要がありますか?
以下は私の読書です