Rest服务抛出异常:最好的处理方式



我有一个rest服务,它会抛出一个异常,我想知道处理这个异常的最好方法是什么

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

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

我穿的是jersey。

<>之前//rest服务@POSTpublic void doSomething() {尝试{//……一段可以抛出用户定义异常和运行时异常的代码} catch(UserDefinedException e) {抛出新的UserDefinedException(e);} catch(异常e) {抛出新的ServiceException(e);}//现在我有一个@Provider来捕获这个抛出的异常@Provider公共类UserDefinedExceptionHandler实现ExceptionMapper {public Response toResponse(UserDefinedException) {ClientResponse ClientResponse = new ClientResponse();ResponseStatus status = new ResponseStatus();clientResponse = handleUserDefinedException(异常,状态,clientResponse);返回Response.ok (clientResponse) .build ();}//ServiceException类似

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

json格式:

{
    "status": "error",
    "data": {
        "message": "detailed error message"
    }
}

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

唯一的"约定"是在客户端发送错误数据触发异常时抛出HTTP 400,当服务意外失败时抛出500。

最新更新