2.14. 异常处理
2.14.1. 创建例外映射器 复制链接链接已复制到粘贴板!
异常映射器是应用提供的自定义组件,可捕获抛出异常并编写特定的 HTTP 响应。
在创建异常映射器时,您将创建一个标有 @Provider 注释并实施 ExceptionMapper 接口的类。
下面是一个异常映射程序示例:
@Provider
public class EJBExceptionMapper implements ExceptionMapper<javax.ejb.EJBException> {
public Response toResponse(EJBException exception) {
return Response.status(500).build();
}
}
若要注册异常映射器,可在 resteasy 文件中,或者以编程方式通过 .providers context-param 下将其列出在 web.xmlResteasyProviderFactory 类注册。
2.14.2. 管理内部浏览例外 复制链接链接已复制到粘贴板!
| 例外 | HTTP 代码 | 描述 |
|---|---|---|
| BadRequestException | 400 | 错误请求.请求的格式不正确,或者处理请求输入时出现问题。 |
| UnauthorizedException | 401 | 未授权.如果您使用 RESTEasy 基于角色的注释安全性,则引发安全性异常。 |
| InternalServerErrorException | 500 | 内部服务器错误. |
| MethodNotAllowedException | 405 | 资源没有处理调用的 HTTP 操作的 Jakarta RESTful Web Services 方法。 |
| NotAcceptableException | 406 | 没有 Jakarta RESTful Web Services 方法可以生成 Accept 标头中列出的媒体类型。 |
| NotFoundException | 404 | 没有 Jakarta RESTful Web Services 方法提供请求路径/资源。 |
| ReaderException | 400 | 从 MessageBodyReaders 引发的所有异常均在此例外内封装。如果没有适用于封装异常的 ExceptionMapper,或者例外不是 WebApplicationException,则默认情况下,RESTEasy 会返回 400 代码。 |
| WriterException | 500 | MessageBodyWriters 引发的所有例外均在此例外内包装。如果没有适用于封装异常的 ExceptionMapper,或者例外不是 WebApplicationException,则默认情况下,RESTEasy 会返回 400 代码。 |
| JAXBUnmarshalException | 400 | Jakarta XML Binding 提供程序(XML 和 Jackson)抛出这个异常,它可能打包了 JAXBExceptions。此课程扩展了 ReaderException。 |
| JAXBMarshalException | 500 | Jakarta XML Binding 提供程序(XML 和 Jackson)在写入时抛出此异常,这可能会换掉 JAXBExceptions。此类扩展了 WriterException。 |
| ApplicationException | N/A | 将所有异常从应用程序代码中抛出,其运行方式与 InvocationTargetException 相同。如果有一个用于封装异常的例外,则 将用于处理请求。 |
| 失败 | N/A | 内部 RESTEasy 错误.未记录。 |
| LoggableFailure | N/A | 内部 RESTEasy 错误.已记录. |
| DefaultOptionsMethodException | N/A |
如果用户调用 |
| UnrecognizedPropertyExceptionHandler | 400 | 当 JSON 数据确定无效时,RESTEasy Jackson 提供程序抛出这一异常。 |