最近2周,由于需要,转而研究异常。
主要心得,体会如下。全是干货。
初步要求:
1.自定义异常
2.建立异常体系结构
1.在cxf中,有一个专门抛异常的 WebApplicationException(javax.ws.rs.WebApplicationException;)作为我们自定义异常的父类。返回的类型是Response形式给Client。
import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; //import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; public class NotFoundException extends WebApplicationException { /** * */ private static final long serialVersionUID = 1L; public NotFoundException(String message) { super(Response.status(Response.Status.NOT_FOUND) .entity(message).type(MediaType.TEXT_PLAIN_TYPE).build()); } }
其中的type(MediaType.TEXT_PLAIN_TYPE)其实可以不要,因为在之前的注解中已经定义了@Produces("application/json").所以影响不大。
在这个异常类中,我定义的是传递的是String。
在使用的时候
if (itemid.isEmpty() || entid.isEmpty()) { throw new NotFoundException("not found"); /* ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.status(Response.Status.NOT_FOUND); builder.entity("The requested resource is not found."); Response response = builder.build(); throw new WebApplicationException(response); */ } else { ..... Response.status(Status.NO_CONTENT).build(); }
注释掉的就是刚才的自定义原形。。(说法不准确,不过效果一样。)
2.这个也只是一个大概,要根据项目模块来划分,初步设想的是将返回的entity中添加自定义的错误Errsubcode,和ErrMessage。跟据有多少模块来定义自己的Errsubcode。
遗留问题:
1.怎么精确定位到出现异常的代码?而不是大段大段的try-catch.
2.然后将出现的异常进行转译。成符合要求的异常(errsubcode添加)
//可能需要添加一个entity什么的,需要参考GenericEntity这个。目前还没用过。。
本文出自 “striby” 博客,请务必保留此出处http://striby.blog.51cto.com/6412152/1397818
原文:http://striby.blog.51cto.com/6412152/1397818