JAX-RS支持处理自定义异常(以EJB或CID Bean形式抛出)以处理自定义HTTP响应。

假设我们有一个“异常” EJB:

@Stateless
public class Hello {public String greeting() {if (new Random().nextBoolean())throw new GreetingException("Could not greet");return "hello";}}
@ApplicationException
public class GreetingException extends RuntimeException {public GreetingException(String message) {super(message);}}

EJB在我们的JAX-RS资源中使用:

@Path("hello")
public class HelloResource {@InjectHello hello;@GETpublic String hello() {return hello.greeting();}}

现在,将发生的异常映射到自定义HTTP响应,我们可以定义JAX-RS ExceptionMapper

@Provider
public class GreetingExceptionMapper implements ExceptionMapper<GreetingException> {@Overridepublic Response toResponse(GreetingException exception) {return Response.status(Response.Status.CONFLICT).header("Conflict-Reason", exception.getMessage()).build();}}

异常映射器注册为JAX-RS扩展名( @Provider ),它将处理资源方法引发的任何GreetingException

该示例偶尔会输出带有标头Conflict-Reason: Could not greet HTTP 409 Conflict

如果使用CDI托管bean而不是EJB,则不需要@ApplicationException批注。

翻译自: https://www.javacodegeeks.com/2017/12/handle-custom-exception-types-jax-rs.html

处理JAX-RS中的自定义异常类型相关推荐

  1. python自定义异常类时、可以继承的类是_Python异常类型及处理、自定义异常类型、断言...

    异常的概念.识别报错信息 异常处理 断言的基本使用 异常类型(异常就是报错) 常见异常 NameError:名称错误 SyntaxError:语法错误 TypeError:类型错误 错误回溯 查看报错 ...

  2. 【Java】Java中的自定义异常

    使用java内置的异常类可以描述在编程时出现的大部分异常情况.初次之外,用户还可以自定义异常.用户自定义异常类,只需要继承Exception类即可. 在程序中使用自定义异常类,大体可以分为以下步骤: ...

  3. java时间定义什么类型_1 Java中的时间类型

    总结:sql中的时间转 util的时间直接赋值即可:反过来,必须先吧util下的时间转换成毫秒,再通过sql的构造器生成sql的时间格式. 1Java中的时间类型 java.sql包下给出三个与数据库 ...

  4. python中自定义错误_在现代Python中声明自定义异常的正确方法?

    在现代Python中声明自定义异常类的正确方法是什么?我的主要目标是遵循其他异常类所具有的任何标准,以便(例如)由捕获异常的任何工具打印出异常中包含的任何额外字符串. 所谓"现代Python ...

  5. JDBC向数据库中插入BLOB类型数据

    目录 1.Blob介绍 2.使用PreparedStatement向数据表中插入Blob类型字段 3.从数据表中读取Blob类型数据 4.特殊情况说明 1.Blob介绍 Blob是一种二进制数据文件, ...

  6. MySQL中的时间类型

    时间是一类重要的数据,MySQL中有多种关于时间的类型可以选择.这篇文章主要介绍MySQL中的时间类型,主要参考MySQL文档:https://dev.mysql.com/doc/refman/8.0 ...

  7. RS中深度学习的两类方法:表示学习和匹配函数学习

    目录 1 基于表示学习 1.1 无序交互 MLP 自动编码器AE 注意力机制 1.2 序列交互 RNN CNN 注意力机制 1.3 多模态内容 分类属性 用户评论 多媒体内容 1.4 链路图 端到端: ...

  8. 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门)

    by Preethi Kasireddy 通过Preethi Kasireddy 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门) (Why use stati ...

  9. javascript优缺点_为什么要在JavaScript中使用静态类型? 优缺点

    javascript优缺点 by Preethi Kasireddy 通过Preethi Kasireddy 为什么要在JavaScript中使用静态类型? 优缺点 (Why use static t ...

最新文章

  1. 端到端对话模型新突破!Facebook发布大规模个性化对话数据库
  2. 虚拟机系统如何添加硬件?
  3. 费氏搜寻法之算法分析与实现
  4. websocketd 实现浏览器查看服务器实时日志
  5. Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
  6. Python下载、安装及其配置
  7. B4.Java web部分
  8. 因为不想「被绿」,美国年轻人只想和 iPhone 聊天
  9. iOS学习6_多线程NSThread和GCD
  10. 机器学习人才的职业薪酬也发展
  11. 程序员应该坚持写博客
  12. 基于RFID的物联网系统
  13. cdr添加节点快捷键_【CDR干货】常用cdr快捷键命令汇总,快来收藏!
  14. H3CIE(WLAN)学习笔记(3)——802.11帧格式与介质访问规则
  15. 四旋翼无人机飞控系统设计(输出分配)
  16. 阳历转阴历,阳历转中国农历
  17. MFI认证——苹果MFI认证流程
  18. 南京邮电大学操作系统实验四:简单文件系统模拟实验
  19. NDN的互联网信息高速最后一公里
  20. bmp图像文件格式说明

热门文章

  1. SpringCloud Ribbon(四)之全局配置与服务配置
  2. Dubbo(二)之SpringBoot nacos集成
  3. JFreeChart(三)之条形图
  4. java io系列09之 FileDescriptor总结
  5. Java命令学习系列(四)——jstat
  6. 漫画:什么是人工智能
  7. 【Php】最最简单的php环境搭建
  8. 一份感动到哭的成绩单……
  9. 新闻发布项目——实体类(User)
  10. 老师不能把你怎样,但外面的世界可以!