在Spring中处理异常的最佳方法和实践?

bei*_*man 8 java hibernate spring-mvc

我在Spring + hibernate中开发了一个Web应用程序,持续了几个月.我一直严重缺少的是异常处理.

我想知道处理异常的最佳方法和实践吗?我脑子里有一些问题,不能涵盖异常处理的所有方面,例如:

1.是否做出检查或未检查的例外?如何决定?

2.如何处理以及如何处理Controller中生成的异常.

3.关于在服务层和DAO层中生成的异常,应该只在该层处理还是应该转移到控制器层?

4.既然有许多例外情况,我怎么能准备好处理将来可能发生的事情?

5.如何向UI或浏览器显示相关消息?

请建议或提供好博客的链接?

jax*_*jax 12

  1. 如果有合理的期望客户端可以处理并从异常中恢复,请使用Checked Exceptions,否则使用Unchecked(您将主要使用未选中).
  2. 使用@ExceptionHandler方法上的注释来处理从@RequestMapping方法生成的异常.
  3. throw 它们可以决定最佳响应,除非服务方法可以从异常中恢复并继续正常处理.
  4. 创建自定义异常和throw那些(您可以将实际异常作为原因传递ie throw new MyCustomException("my message", e))
  5. 您的@ExceptionHandler方法可以决定返回给用户的视图,也可以在您的配置中配置自定义错误页面web.xml


M. *_*num 5

  1. 一般不要使用已检查的异常,您不希望对流控制使用异常,旁边大多数异常都是不可恢复的,那么您打算做什么?看到这个相关的答案.

  2. 关于异常处理,弹簧具有的HandlerExceptionResolver.您可以将其用于一般异常处理.对于更细粒度的控制,您可以在控制器中注释方法,@ExceptionHandler这些方法将仅处理从该控制器发生的异常.(虽然使用新的@ControllerAdvice,您也可以注册全局@ExceptionHandler方法.

  3. 在某些情况下,您可能希望在控制器中捕获异常并在控制器内处理它们(例如,向用户显示警告).

作为最后的手段,您始终可以error-page在web.xml中配置非常通用和广泛的异常处理.

有关更多信息,您可能需要查看"Spring参考指南"中的异常处理部分.