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

Java Spring中处理异常的最佳方法和实践?,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,在过去的几个月里,我一直在Spring+hibernate中开发一个web应用程序。 我一直严重缺少的是异常处理 我想知道处理异常的最佳方法和实践? 我脑海中有一些问题无法涵盖异常处理的所有方面,例如: 1.是否进行勾选异常?如何决定 2.如何处理以及如何处理控制器中生成的异常 3.在服务层和DAO层中生成的异常情况如何?它们应该仅在该层中处理,还是应该在该层中处理 传输到控制器层 4.由于可能有许多例外情况,我如何准备处理将来可能出现的例外情况 5.如何将相关消息显示到UI或浏览器 请建议或提

在过去的几个月里,我一直在Spring+hibernate中开发一个web应用程序。 我一直严重缺少的是异常处理

我想知道处理异常的最佳方法和实践? 我脑海中有一些问题无法涵盖异常处理的所有方面,例如:

1.是否进行勾选异常?如何决定

2.如何处理以及如何处理控制器中生成的异常

3.在服务层和DAO层中生成的异常情况如何?它们应该仅在该层中处理,还是应该在该层中处理 传输到控制器层

4.由于可能有许多例外情况,我如何准备处理将来可能出现的例外情况

5.如何将相关消息显示到UI或浏览器

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

  • 如果有合理的预期客户机可以处理异常并从异常中恢复,则使用选中异常,否则使用未选中异常(您将主要使用未选中异常)
  • 在方法上使用
    @ExceptionHandler
    注释来处理从
    @RequestMapping
    方法生成的异常
  • 将它们抛出
    控制器,以便它可以决定最佳响应,除非服务方法能够从异常中恢复并正常进行处理
  • 创建自定义异常并抛出这些异常(您可以将实际异常作为原因传递,即抛出新的MyCustomException(“我的消息”,e))
  • 您的
    @ExceptionHandler
    方法可以决定返回给用户的视图,或者您可以在
    web.xml
  • 一般来说,不要使用选中的异常,您不想将异常用于流控制,除此之外,大多数异常都是不可恢复的,那么您将怎么做?看

  • 关于异常处理,spring为其提供了
    HandlerExceptionResolver
    。您可以将其用于常规异常处理。对于更细粒度的控制,您可以使用
    @ExceptionHandler
    注释控制器中的方法,这些方法将仅处理该控制器中发生的异常。(尽管使用新的方法,您也可以注册全局
    @ExceptionHandler
    方法

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

  • 作为最后一种手段,您始终可以在web.xml中配置
    错误页面
    ,以进行非常通用和广泛的异常处理


    有关更多信息,您可能需要查看Spring参考指南。

    谢谢您的解释。您的建议非常好。您可以提供一些具体的示例吗?可能是一些链接。再次您好。这些建议非常好,但实际上我在异常处理方面非常薄弱。我需要修改概念吗?有什么建议吗?