当前位置: 首页 > 知识库问答 >
问题:

RESTful Spring Boot服务中的异常处理

诸龙野
2023-03-14

因此,我在Spring Boot服务中定义了各种APIendpoint,它们抛出各种自定义异常。但我无法区分已检查和未检查的执行。

那么,我的自定义例外是要检查还是不检查?

示例:

  1. UserNotFoundException
  2. EmailAlreadyExistsException
  3. JWTTokenMalformedException
  4. 数据库NodeFailureException

这些异常由Springs controllerAdvice解析,转换为ResponseEntity并发送到客户端。

您如何将上述自定义创建的异常定义为选中或未选中?另外,请告诉我是否有任何经验法则来决定是否应检查或取消检查您的异常?

共有1个答案

祁坚壁
2023-03-14

即使您的所有异常都是RuntimeException,您也很好,因为您将错误响应生成委托给ControllerAdvice。不管它是RESTful Spring Boot服务还是另一个Java应用程序,从方法中抛出已检查或未检查异常的前提很大程度上取决于调用方必须(已检查)还是应该(运行时)处理异常。

比如打电话的时候

FileInputStream fis = new FileInputStream("somefile.txt");

构造函数FileInputStream(字符串文件名)强制处理未找到文件的异常情况。因此,它抛出一个FileNotFoundException,这是一个已检查的异常,必须由调用方在调用位置本身处理。

 类似资料:
  • 问题内容: 如果我的Dao层抛出了Dao特定的异常,那么在我的服务层中对它们的处理是否会引起关注的泄漏?如果是,那么我应该使异常通用且独立于任何层来解决它,还是有其他方法吗? 相同的问题适用于服务层引发的UI层处理异常。 问题答案: 当我们创建一个分层的应用程序时,总是有一个用户层和另一个使用过的层。对于这种情况,UI层->使用服务层->使用DAO层。 现在,它非常主观并且易于解释。但目标应该是

  • 我正在使用quarkus版本,需要知道如何处理未知endpoint。当我试图命中尚未实现的endpoint时,它只会发送,而不是我希望实现的异常。我无法找到相同的实现。有人能帮我做这个吗?

  • 问题内容: 我正在尝试建立一个大型的REST服务服务器。我们正在使用Spring Boot 1.2.1,Spring 4.1.5和Java8。我们的控制器正在实现@RestController和标准的@RequestMapping注释。 我的问题是Spring Boot为控制器异常设置了默认重定向到/error。从文档: Spring Boot默认提供一个/ error映射,以一种明智的方式处理所

  • 我正在尝试建立一个大型的REST服务服务器。我们使用的是spring boot 1.2.1 spring 4.1.5和Java 8。我们的控制器实现了@RestController和标准的@RequestMapping注释。 我的问题是,spring boot将控制器异常设置为的默认重定向。从文档中: 默认情况下,spring boot提供了一个/error映射,它以一种合理的方式处理所有错误,并

  • 我正在处理一个Spring启动应用程序。我尝试处理异常。但我想我这样做的方式有问题,因为它总是抛出内部服务器错误500。 我尝试设置自定义异常类,并且还使用带有@响应状态的响应状态代码。但是不管异常是什么,它只会抛出内部服务器错误。我使用的是intellij,我在异常中给出的消息打印在那里,但响应正文empty.This我想一定是因为它抛出了内部服务器错误。 控制器类 intellij 中的终端打

  • 我有一个WCF服务,它连接到一个服务总线队列,准备接收消息。这是工作很好,但我希望能够标记的消息作为一个死信,如果我有一个问题处理的消息。当前,如果我的代码抛出异常,消息仍然会从队列中删除,但我希望能够在配置中指定不从队列中删除,但将其标记为死信。我做了一些搜索,但我不知道怎么做。我当前正在将该服务作为windows服务运行 Uri baseAddress=ServiceBusEnvironmen