「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.正確な例外をバブルアップするか、または例外を使用してマスクする必要がありますか?
以下は私の読みです
DataSeries
常に時間ベースの順序で保持する必要があるデータを保持するクラスがあります。DataPoint
の末尾にを追加するメソッドがありDataSeries
ます。すべてのコードがプロジェクト全体で正しく機能している場合は、DataPoint
すでに最後にある日付より前の日付を持つを最後に追加しないでください。プロジェクト全体のすべてのモジュールは、この自明で構築されています。ただし、この状態をチェックし、それが発生した場合はチェックされない例外をスローします。どうして?それが起こった場合、私は誰がこれをやっているかを知り、それを修正したいと思います。