4

我有一个会引发异常的休息服务,我想知道处理这个问题的最佳方法是什么。

所以我有一个休息服务,它可以抛出一个用户定义的异常,我在 catch 块中捕获它并再次抛出那个异常!并使用休息框架来捕捉它。对于非用户定义的异常也是如此。我认为这会很好,因为我有许多休息服务,并且所有用户定义的异常代码处理都将在同一个地方。

我想知道这是在休息服务中处理异常的正确方法吗?

我正在使用运动衫。

//休息服务
@邮政
公共无效doSomething(){

尝试 {
// ... 一些可以抛出用户定义异常和运行时异常的代码
} 捕捉(用户定义异常 e){
抛出新的 UserDefinedException(e);
} 捕捉(异常 e){
抛出新的 ServiceException(e);
}

// 现在我有一个@Provider 来捕获这个抛出的异常

@Provider
公共类 UserDefinedExceptionHandler 实现
        异常映射器 {

    公共响应到响应(UserDefinedException 异常){
        客户端响应客户端响应 = 新客户端响应();
        ResponseStatus 状态 = 新的 ResponseStatus();

        clientResponse = handleUserDefinedException(异常,状态,clientResponse);

        返回 Response.ok(clientResponse).build();
    }

// 同样对于 ServiceException
4

2 回答 2

5

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

像这样的 json 格式:

{
    "status": "error",
    "data": {
        "message": "detailed error message"
    }
}
于 2013-04-09T16:42:45.993 回答
1

在 REST 服务中处理异常与在任何其他代码段中处理异常没有太大区别。

唯一的“约定”是如果异常是由客户端发送不正确的数据触发的,则返回 HTTP 400,当您的服务意外失败时返回 500。

于 2013-04-09T16:35:57.827 回答