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

Rest服务引发异常:处理的最佳方法

侯令雪
2023-03-14

我有一个rest服务,它将抛出一个异常,我想知道什么将是最好的方式来处理这一点。

我想知道这是rest服务中处理异常的正确方式吗?

我在用泽西。


// rest service 
@POST
public void doSomething() {

try {
// ... some piece of code that can throw user defined exception as well as runtime exception
} catch(UserDefinedException e) {
throws new UserDefinedException(e);
} catch(Exception e) {
throws new ServiceException(e);
} 

// Now I have a @Provider to catch this thrown exception 

@Provider
public class UserDefinedExceptionHandler implements
        ExceptionMapper {

    public Response toResponse(UserDefinedException exception) {
        ClientResponse clientResponse = new          ClientResponse();
        ResponseStatus status = new ResponseStatus();

        clientResponse = handleUserDefinedException(exception, status, clientResponse);

        return Response.ok(clientResponse).build();
    }

// similarly for the ServiceException

共有1个答案

尚楚
2023-03-14

只是在服务器上提出错误500并没有给出关于错误的详细信息,一种优雅地处理错误的方法是将响应数据包装在一个包含状态和数据的结构中,如果状态为错误,则显示正确的消息。

类似于json格式的内容:

{
    "status": "error",
    "data": {
        "message": "detailed error message"
    }
}
 类似资料:
  • 我正在使用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 中的终端打

  • 我正在将本地netty服务器连接到远程https服务器以代理请求。 下面是我如何创建ssLcontext bean 当我点击我的本地主机时,它应该代理到后端。我得到以下异常。但是,如果SSL关闭并且我连接到远程,这是在不同端口上运行的本地服务器,则工作正常 编辑 添加的日志

  • 我是编程初学者。我试图在windows版本中运行CTAKEAPI,但在试图通过Postman获得响应时出现以下错误。有人能告诉我正确的步骤吗?提前谢谢。