テキスト ファイルを読み取って分析するコード ベースを見つけました。例外の使用方法に少し混乱しています。拡張クラスが例外のエラー メッセージのみを返す場合、例外が定義されているAppFileReaderException別のクラス。extendsまた、関数getSymbol()は と の両方throwsを使用しtry and catch blockます。error()関数には例外ハンドラーもあり、ネストされた例外が発生する可能性があります。基本的な try と catch で十分な場合に、このような例外処理を行う利点はありますか? throws例外クラスを拡張し、両方を組み合わせてtry-catchブロックする理由はありますか? これらはオーバーキルですか、それともそのような構造を持つ正当な理由がありますか?
package AppName;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
public class AppFileReader {
//
public char getSymbol() throws AppFileReaderException {
try {
//do something
} catch (Exception e) {
error("IO Error: " + fileName + "@" + currentLineNumber);
}
return somechar;
}
public void error(String errorMsg) throws AppFileReaderException {
throw new AppFileReaderException(errorMsg);
}
public AppFileReader(String fileName) throws FileNotFoundException {
reader = new LineNumberReader(new FileReader(fileName));
this.fileName = fileName;
}
}
//------------------------------------------------ ------------------
の拡張クラスAppFileReaderExceptionは次のとおりです。
package AppName;
public class AppFileReaderException extends Exception {
public AppFileReaderException(String msg)
{
super(msg);
}
}