テキスト ファイルを読み取って分析するコード ベースを見つけました。例外の使用方法に少し混乱しています。拡張クラスが例外のエラー メッセージのみを返す場合、例外が定義されている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);
}
}