是否可以为所有意外错误创建全局异常处理程序.因为不可能像这样制作所有可能的类:
public class ExceptionHandler implements ExceptionMapper<JsonMappingException> {...}
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
public class ExceptionHandler implements ExceptionMapper<Exception>
Run Code Online (Sandbox Code Playgroud)
Poo*_*ool 10
请注意,虽然接受的答案确实捕获了所有异常,但它会导致许多其他问题,例如干扰Resteasy 的内部异常处理.
因此,如果采用此方法,还应为每个对您而言重要的方法构建自定义异常映射.
特别是此方法将破坏内置的CORS处理,因此如果允许CORS响应,则应创建CORS自定义异常映射器.
@Provider
public class DefaultOptionsExceptionHandler implements ExceptionMapper<DefaultOptionsMethodException> {
@Override
public Response toResponse(DefaultOptionsMethodException e) {
return e.getResponse();
}
}
Run Code Online (Sandbox Code Playgroud)
您可能可以执行以下操作:
@Provider
public class GlobalExceptionHandler implements ExceptionMapper<Exception> {
public Response toResponse(Exception exception) {
return Response.status(Status.INTERNAL_SERVER_ERROR)
.entity("An error occured").type(MediaType.TEXT_PLAIN)
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚在 RESTEasy 3.0.6.Final 中对其进行了测试,它似乎可以工作。请记住,500 Internal Server Error状态代码可能并不总是合适的。
| 归档时间: |
|
| 查看次数: |
4001 次 |
| 最近记录: |