我在dao
文件中有几种与DB operations
相关的方法。
public int addStudent(Student student) throws MyAppException, SQLException {
// adding student in db
}
在我的controller
中,我使用的是
try{
myObj.addStudent(student);
}catch(Exception e){
Alert alert = new Alert(AlertType.ERROR, e.getMessage());
alert.showAndWait();
}
我能够在Error
上显示对话框消息,但想在一个地方而不是每个catch clause
上进行处理,就像
public void myGlobalCatchhandler(Exception e){
Alert alert = new Alert(AlertType.ERROR, e.getMessage());
alert.showAndWait();
}
放在try块的每个catch子句的一个位置。
答案 0 :(得分:0)
这里有很多方法可能会有所帮助。
@SneakyThrows
将允许在没有catch
块的情况下抛出已检查的异常; Thread.UncaughtExceptionHandler
中处理所有未捕获的运行时异常; catch
块中每次使用它; try-catch
,则可以引入一些包装方法,例如:@FunctionalInterface
interface DatabaseAction<T> {
T execute() throws MyAppException, SQLException;
}
<T> T performDatabaseAction(DatabaseAction<T> action) {
try {
return action.execute();
} catch (MyAppException | SQLException e) {
Alert alert = new Alert(AlertType.ERROR, e.getMessage());
alert.showAndWait();
return null;
}
}