3

我正在使用 spring 的 @ControllerAdvice 和 @ExceptionHandler 进行异常处理。任何方法都会从 Controller 抛出自定义异常,并由相应的 @ExceptionHandler 处理它。如果发生运行时异常(例如任何 HibernateException),那么它将抛出运行时异常,并且我没有任何 @ExceptionHandler 用于运行时异常。

我的问题是如何处理任何运行时异常?我需要为控制器抛出的每个异常添加@ExceptionHandler 吗?我不想为 Exception.class 创建一个 Generic ExceptionHandler,因为我必须根据发生的异常发送不同的错误代码。

一种方法是在 Controller 中添加 try catch 块,然后从 catch 块中抛出自定义异常?还是有其他更好的方法?

所有@ExceptionHandlers 都在@ControllerAdvice 类中。

4

1 回答 1

3

另一种选择是不要赶上ExceptionController捕获所有层并抛出自定义异常,例如Exceptionservice如果您坚持记录失败,请抛出DatabaseException消息。见下面的方法:

Student persist(Student object){
   try{
      studentDao.insert(object);
   }catch(HibernateException e){
      throw new DatabaseException("database operation failed!");
   }
   return student;
}

从您的异常处理程序方法中,您可以获得消息。这样你就可以在不同的异常上设置不同的消息。

于 2017-01-15T08:29:00.460 回答