resteasy 异常处理
来源:互联网 发布:魔卡幻想淘宝号安全吗 编辑:程序博客网 时间:2024/04/30 16:03
运行环境
resteasy提供了一个ExceptionMapper接口异常处理.
本次采用servlet3.0容器(为了方便使用initializer)
example
pom.xml
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>3.1.3.Final</version></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-servlet-initializer</artifactId><version>3.1.3.Final</version></dependency>
ExceptionMapper注册有多用方式有基于@Provider注解的,有基于web.xml的,本次基于web.xml方式
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="JAXRS-RESTEasy" version="3.0"> <display-name>JAXRS-RESTEasy</display-name><context-param><param-name>resteasy.providers</param-name><param-value>stu.resteasy.MyExceptionHandler2,stu.resteasy.MyExceptionHandler,stu.resteasy.MyExceptionHandler3</param-value></context-param> </web-app>注:上面注册了多个ExceptionHandler,用于处理不同的exception,一个exception只会被一个ExceptionHandler处理
MyExceptionHandler
package stu.resteasy;import javax.ws.rs.core.Response;import javax.ws.rs.core.Response.Status;import javax.ws.rs.ext.ExceptionMapper;import javax.ws.rs.ext.Provider;//@Providerpublic class MyExceptionHandler implements ExceptionMapper<ArithmeticException> {@Overridepublic Response toResponse(ArithmeticException exception) {String message = "arithmeticException catch:" + exception.getMessage(); return Response.status(Status.BAD_REQUEST).entity(message).build(); }}
MyExceptionHandler2
package stu.resteasy;import javax.ws.rs.core.Response;import javax.ws.rs.core.Response.Status;import javax.ws.rs.ext.ExceptionMapper;import javax.ws.rs.ext.Provider;//@Providerpublic class MyExceptionHandler2 implements ExceptionMapper<Exception> {@Overridepublic Response toResponse(Exception exception) {String message = "exception catch:" + exception.getMessage(); return Response.status(Status.BAD_REQUEST).entity(message).build(); }}
MyExceptionHandler3
package stu.resteasy;import javax.ws.rs.core.Response;import javax.ws.rs.core.Response.Status;import javax.ws.rs.ext.ExceptionMapper;import javax.ws.rs.ext.Provider;//@Providerpublic class MyExceptionHandler3 implements ExceptionMapper<NumberFormatException> {@Overridepublic Response toResponse(NumberFormatException exception) {String message = "numberFormatException catch:" + exception.getMessage(); return Response.status(Status.BAD_REQUEST).entity(message).build(); }}
Application
package stu.resteasy;import java.util.HashSet;import java.util.Set;import javax.ws.rs.ApplicationPath;import javax.ws.rs.core.Application;@ApplicationPath("/rest")public class TestApplication extends Application { private static Set<Class<?>> classes = new HashSet<Class<?>>(); @Override public Set<Class<?>> getClasses() { //注册服务,可注册多个 classes.add(TestResource.class); return classes; }}
resource
package stu.resteasy;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.core.Response; @Path("/testResource") public class TestResource { @GET @Path("/{param}") public Response printMessage(@PathParam("param") String msg){ String result = "Restful example : " + msg; //不是数字将抛出numberFormatException(抛出异常,后面代码不再执行) Integer.parseInt(msg); //抛出ArithmeticException int i=1/0; return Response.status(200).entity(result).build(); } }
访问:http://localhost:8080/rest/testResource/helloworld
打印:numberFormatException catch:For input string: "helloworld"
访问 http://localhost:8083/rest/testResource/1
打印:arithmeticException catch:/ by zero
由上可以看到,一个exception只会被一个exceptionHandle捕获处理.先找此异常对应的handler,找不到,找其父类的handler,一直往上找,找不到,将报500错误.项目中一个会有一个大的Throwable捕获处理
阅读全文
1 0
- resteasy 异常处理
- resteasy 统一的异常处理handler
- RESTEasy中的通用异常处理ExceptionMapper
- resteasy统一的异常处理handler
- Java Web 学习笔记之十一:RestEasy统一处理异常
- RestEasy统一异常处理问题,处理之后前端一直处于等待状态未返回异常结果
- RESTEasy中的HTTP异步处理
- RESTeasy
- Resteasy
- resteasy
- 如何解决java异常NoClassDefFoundError(resteasy)
- RESTEasy中的HTTP异步处理(下)
- 异常处理+异常+处理异常+自定义异常
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 082-C++
- java-SE-4
- 在android中使用i-jetty启http服务
- svg之clip-path更多效果的实现
- obc学习笔记1
- resteasy 异常处理
- Oracle中的正则表达式(及函数)详解
- 通过log中的kill reson来定位应用是被谁杀掉的
- kafka生产者和消费者端的数据不一致
- LIBRE EVK with LS6 Firmware Upgrade Fail
- 51NOD1243 排船的问题 【二分+贪心】
- Adaboost入门教程——最通俗易懂的原理介绍(图文实例)
- PhotoShop概念篇——rgb色彩模式
- TomCat本地服务器搭建