2019独角兽企业重金招聘Python工程师标准>>>

在默认情况下,jersey处理业务层抛出的异常,生成http的500状态码,不会针对不同的异常生成不同的状态码。

jersey处理异常,主要有两种方式。

1、实现javax.ws.rs.ext.ExceptionMapper<T>,T为所要抛出的异常类型。当jersey捕获到T异常,就返回实现类的响应。

当抛出RuntimeException异常,就会返回404异常。需要注意的是:实现类要加@Provider注解,而且要放在jersey资源所在的包路径,以便jersey扫描到。

@Provider
public class Exception404Mapper implements ExceptionMapper<RuntimeException> {@Overridepublic Response toResponse(RuntimeException e) {return Response.status(404).entity(e.getMessage()).type(MediaType.TEXT_PLAIN).build();}
}

2、继承javax.ws.rs.WebApplicationException,当然也可以直接抛出WebApplicationException,不过得到的是默认的500错误状态码。这里定义了401异常状态码。这样jersey捕获到ParameterException异常,将会返回http 401错误状态码。

public class ParameterException extends WebApplicationException {private static final long serialVersionUID = 1L;public ParameterException() {super(Response.status(401).entity("参数异常").type(MediaType.TEXT_PLAIN).build());}public ParameterException(String msg) {super(Response.status(401).entity(msg).type(MediaType.TEXT_PLAIN).build());}
}

测试如下:wr是com.sun.jersey.api.client.WebResource。使用junit的fail(),我们就可以确定代码的执行流程。

    /*** 测试404错误状态码*/@Testpublic void test404Exception() {try {wr.path("exception").get(Response.class);fail();} catch (UniformInterfaceException e) {ClientResponse response = e.getResponse();response.getStatus();assertEquals(404, response.getStatus());} catch (ClientHandlerException e) {fail();}}/*** 测试401错误状态码*/@Testpublic void testWebApplicationException() {try {wr.path("exception/webApplicationException").get(Response.class);fail();} catch (UniformInterfaceException e) {ClientResponse response = e.getResponse();response.getStatus();assertEquals(401, response.getStatus());} catch (ClientHandlerException e) {fail();}}

Jersey的使用,请看Jersey

Jersey测试,请看JerseyTest

转载于:https://my.oschina.net/u/2007041/blog/465101

Jersey 异常处理相关推荐

  1. jaxb 处理_休息使用Jersey –包含JAXB,异常处理和客户端程序的完整教程

    jaxb 处理 最近,我开始使用Jersey API开发一个Restful Web服务项目. 在线提供了一些教程,但是我遇到了异常处理方面的一些问题,而且在使用JaxB并提供异常处理方法的完整项目中找 ...

  2. 休息使用Jersey –包含JAXB,异常处理和客户端程序的完整教程

    最近,我开始使用Jersey API开发一个Restful Web服务项目. 在线提供了一些教程,但是我遇到了异常处理方面的一些问题,而且在使用JaxB和提供异常处理方法的完整项目中找不到任何地方. ...

  3. Jersey框架:统一异常处理

    为什么要统一处理异常? 在企业应用中,后端响应前端请求必须要带响应状态码,如状态码200表示请求正常响应,403代表权限认证失败,404代表资源不存在等.在Jersey框架中带响应状态码的响应一般都要 ...

  4. Jersey 开发RESTful(十五) Jersey的拦截器

    [原创文章,转载请注明原文章地址,谢谢!] 上一节我们介绍了Jesery中的过滤器.过滤器主要用来处理请求头,响应头,请求URI地址等等,但是如果涉及到想要修改请求实体内容或者响应实体内容相关的统一业 ...

  5. Go语言的错误异常处理机制及其应用

    一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...

  6. SpringBoot (二) :全局异常处理设置

    说在前面 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有 ...

  7. 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理

    目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...

  8. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  9. 零基础学习python_异常处理(32-33课)

    我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...

最新文章

  1. Chromosome-scale assemblies of plant genomes using nanopore long reads and optical maps
  2. Nginx + CGI/FastCGI + C/Cpp
  3. UWP图片编辑器(涂鸦、裁剪、合成)
  4. FPGA学习之路—接口(1)—URAT Verilog程序设计
  5. Windows 10 关闭Hyper-V
  6. JDK9新特性实战:简化流关闭新姿势
  7. leetcode 1319. 连通网络的操作次数(并查集)
  8. 蚂蚁金服上市诞生千个亿万富翁,财富自由,离你不远!
  9. paip.asp 项目流程及管理工具总结
  10. psp android 模拟器,安卓psp模拟器
  11. HTML+JS+CSS实现幻灯片效果(附代码)
  12. 阅读jeecms源码总结
  13. markdown编辑器示范
  14. HDFS文件访问权限
  15. LICEcap:GIF屏幕录制工具
  16. 达索SOLIDWORKS PDM让你的团队协作更紧密
  17. ovf导入虚拟服务器,云主机 导入 ovf
  18. 提问:微信网页授权到第三方调用错误、调用微信公众号扫码登陆错误、微信SCOP权限错误或没有权限
  19. oracle vm虚拟盒,虚拟盒子内部版下载|虚拟盒子虚拟机下载_最火软件站
  20. 程序员可以收藏的几个导航网站

热门文章

  1. X云微专业-功能测试需求分析
  2. java注解 自定义策略传参_Java注解教程及自定义注解
  3. php 动态多维数组长度,php – 动态创建多维数组
  4. mysql 日期分隔符_sql中的日期处理
  5. Stable Region Correspondences Between Non-Isometric Shapes
  6. 服务器开机后显示f1 f2,电脑开机总是提示按f1 f2问题的解决办法
  7. html5向上向下兼容插件,Sticky Header-兼容IE8的页面顶部固定jQuery插件
  8. python改变背景颜色_python中绘图时怎么改背景颜色?
  9. python ttk.notebook_python – 无法在ttk.Notebook中看到所有选项卡
  10. 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画