我在Spring + hibernate中开发了一个最近几个月的Web应用程序。 我一直严重缺少的是异常处理。
我想知道处理异常的最佳方法和实践吗? 我脑子里有一些问题,不能涵盖异常处理的所有方面,如:
1.是否进行选中或未选中的例外情况?如何决定?
2.如何处理以及如何处理Controller中生成的异常。
3.在服务层和DAO层中生成的异常是什么?应该只在该层中处理它们还是应该在 转移到控制器层?
4.由于可能有许多例外情况,我怎么能准备好处理将来可能发生的事情呢?
5.如何向UI或浏览器显示相关消息?
请建议或提供好博客的链接?
答案 0 :(得分:11)
@ExceptionHandler
注释来处理从@RequestMapping
方法生成的异常。throw
他们到控制器,以便它可以决定最佳响应,除非服务方法实际上可以从异常中恢复并继续正常处理。throw
(您可以将实际例外作为原因传递,throw new MyCustomException("my message", e)
)@ExceptionHandler
方法可以决定返回给用户的视图,也可以在web.xml
答案 1 :(得分:5)
一般情况下,不要使用已检查的异常,您不希望对流量控制使用异常,旁边大多数异常都是不可恢复的,那么您打算做什么?请参阅this related answer。
关于异常处理,spring对that有HandlerExceptionResolver
。您可以将其用于一般异常处理。对于更精细的控制,您可以使用@ExceptionHandler
在控制器中注释方法,这些方法仅处理从该控制器发生的异常。 (尽管使用新的@ControllerAdvice ,您还可以注册全局@ExceptionHandler
方法。
在某些情况下,您可能希望在控制器中捕获异常并在控制器内处理它们(例如,向用户显示警告)。
作为最后的手段,您始终可以在web.xml中配置error-page
,以进行非常通用和广泛的异常处理。
有关详细信息,您可能需要查看“Spring参考指南”中的the exception handling section。