2013-08-29 68 views
6

我在过去的几个月里一直在Spring + hibernate中开发一个web应用程序。 我一直严重缺失的是异常处理。在Spring中处理异常的最佳方法和实践?

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

1.是否进行选中或取消选中异常?如何决定?

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

3.什么是在服务层和DAO层中生成的异常?是否应该仅在该层中处理它们,还是应该将其转移到控制器层?

4.既然可能有很多例外,我怎么能够准备好处理那些未来可能出现的问题?

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

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

回答

9
  1. 如果有合理的期望,客户端可以处理并从异常中恢复,则使用检查异常,否则使用未选中(您将主要使用未选中)。
  2. 在方法上使用@ExceptionHandler注释来处理从@RequestMapping方法生成的异常。
  3. throw他们到控制器,以便它可以决定最佳响应,除非服务方法可以实际从异常中恢复并正常进行处理。
  4. 创建自定义异常和throw那些代替(你可以通过实际的异常的原因即throw new MyCustomException("my message", e)
  5. @ExceptionHandler方法可以决定返回什么看法给用户,或者你可以在你web.xml配置自定义错误页
+0

感谢您的解释。您的建议是非常好的,你可以提供一些具体的例子吗?可能是一些链接。 – beinghuman

5
  1. 一般不使用checked异常,你不希望使用异常流量控制,旁边大多数例外不可恢复的,那么什么是你打算怎么办?见this related answer

  2. 关于异常处理,spring对thatHandlerExceptionResolver。您可以将其用于一般的异常处理。对于更细粒度的控制,您可以使用@ExceptionHandler对控制器中的方法进行注释,这些方法仅处理来自该控制器的异常。 (虽然新@ControllerAdvice,你也可以注册全球@ExceptionHandler方法。

  3. 在某些情况下,你可能要捕获异常在控制器和处理他们的控制器内(即显示警告用户为例)。

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

欲了解更多信息,你可能想检查弹簧参考指南the exception handling section

+0

hello again。这些建议非常好,但实际上我在异常处理方面非常薄弱。可能需要修改概念?对我有什么建议? – beinghuman

相关问题