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

标签 java hibernate spring-mvc

<分区>

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

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

1.是做checked还是unchecked Exception?如何决定?

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

3.在Service层和DAO层产生的异常怎么办?应该只在那个层处理还是应该在那个层处理? 转移到 Controller 层?

4.既然可能有无数的异常(exception)情况,我该如何准备应对 future 可能出现的情况?

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

请推荐或提供好的博客链接?

最佳答案

  1. 如果有合理的期望客户端可以处理异常并从异常中恢复,则使用已检查的异常,否则使用未检查的(您将主要使用未检查的)。
  2. 在方法上使用 @ExceptionHandler 注释来处理 @RequestMapping 方法产生的异常。
  3. 将它们丢给 Controller ,以便它可以决定最佳响应,除非服务方法实际上可以从异常中恢复并继续正常处理。
  4. 创建自定义异常并抛出(您可以传递实际异常作为原因,即throw new MyCustomException("my message", e))
  5. 您的 @ExceptionHandler 方法可以决定返回给用户的 View ,或者您可以在 web.xml
  6. 中配置自定义错误页面

关于java - 在 Spring 中处理异常的最佳方法和实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510166/

相关文章:

java - 由于 SetOnClickListener NullPointerException (Android Studio),应用程序崩溃

java - Camel HTTP 端点 : How to set URL-String to POST Parameter

java - com.mysql.jdbc.MysqlDataTruncation : Data truncation: Data too long for column 'DATE' at row 1

java - Caused by : java. lang.IllegalStateException : Ambiguous mapping found. Cannot map 'appController' bean method

java - 将 authentication-failure-url 定义为 `{currentpage}?login_error=1` ?

java - 有没有一种方法可以在不使用外部工具的情况下分析 Java 应用程序?

java - 为什么单线程使我的 Java 程序速度如此之快?

java - Hibernate:存储基元的嵌入映射

java - Tomcat 8.5 ServletException JSP 文件未找到(但 100% 存在)

spring - 在某个包中的所有 Controller 方法上预先设置 RequestMapping 的路径