我正在开发一个旧项目(基于jdk 7的grails 2.2.3)。我想使用 @controllerAdvice 之类的东西来进行异常处理,而不是在每个控制器方法中尝试捕获,并且我不确定它是否支持它。还有其他建议吗?
旧代码使用 try catch 块。
您可以按照约定在控制器中声明异常处理方法,如下所示:
// grails-app/controllers/demo/DemoController.groovy
package demo
class DemoController {
def someAction() {
// do some work
}
def handleSQLException(SQLException e) {
render 'A SQLException Was Handled'
}
def handleBatchUpdateException(BatchUpdateException e) {
redirect controller: 'logging', action: 'batchProblem'
}
def handleNumberFormatException(NumberFormatException nfe) {
[problemDescription: 'A Number Was Invalid']
}
}
参见: https://grails.github.io/grails2-doc/2.5.x/guide/single.html#controllerExceptionHandling