Я наткнулся на базу кода, которая читает текстовый файл и анализирует его. Я немного смущен тем, как используются исключения. В отдельном классе AppFileReaderException
определены исключения extends
, где расширенный класс возвращает сообщение об ошибке для исключения. Кроме того, функция getSymbol()
использует как throws
, так и try and catch block
. Функция error()
имеет обработчик исключений, который может привести к вложенным исключениям! Есть ли какое-либо преимущество в выполнении такой обработки исключений, когда основная попытка и улов должны быть достаточными? Есть ли причина продления класса исключений, объедините оба блока throws
и try-catch
? Являются ли они более убитыми или есть веская причина иметь такие конструкции?Обработка вложенных исключений Java
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);
}
}