REST(Jersey实现)统一异常机制

一:异常分类

 (1)Throwable类是所有异常的始祖,它有两个直接子类Error / Exception:

Error仅在Java虚拟机中发生动态连接失败或其它的定位失败的时候抛出一个Error对象。一般程序不用捕捉或  抛出Error对象。

(2)Unchecked Exception:

a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复。

b. 包括Error与RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException等。

c. 语法上不需要声明抛出异常。

(3)Checked Exception:

a. 代表程序不能直接控制的无效外界情况(如用户输入,数据库问题,网络异常,文件丢失等)

b. 除了Error和RuntimeException及其子类之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。

c. 需要try catch处理或throws声明抛出异常。

二:异常处理原则

1、在框架层面封装checked exception,将其转化为unchecked exception,避免开发过程中编写繁冗的try...catch代码。

2、业务层面的开发,根据程序代码职责定义不同的RuntimeException(它就是unchecked exception,一般定义为RuntimeException的子类)

3、通过前两个观点,系统中自定义的异常将只存在unchecked exception,系统只在于客户端交换数据的上层,设置统一异常处理机制,并将一些异常转化为用户所能理解的信息传达给用户。

4、其他如业务层,数据持久层,等底层只负责将异常抛出即可,但要注意不要丢失掉异常堆栈(这一点是初学者容易犯的一个错误)。

三: jersey异常处理机制举例

(1)在api所在包下,创建ExceptionMapperSupport统一异常处理器

(2)自定义异常

异常父类;持久层异常;业务层异常

(3)Dao层异常统一抛出PersistenceException

(4)业务逻辑层Action抛出WebActionExceptionType

(5):自定义异常友好提示

(6):api调用,异常解析

(7):异常提示效果

时间: 2024-08-08 18:04:55

REST(Jersey实现)统一异常机制的相关文章

Jersey Rest 异常统一处理机制

前言: 异常分为运行时异常和非运行时异常,所谓的运行时异常是指那些不需要异常捕获的异常,总是交由虚拟机接管,如:ArrayIndexOutOfBoundsException,我们在写程序时,并没有使用try..catch来捕获它. 以前,我们进行项目开发时,习惯性的喜欢使用大量的try...catch...finally方法来进行异常处理,并且,只是将异常信息保存到log日志中即可,并没有将一些异常信息以可读性的方式返回给前端用户.而在一些比较大的项目中,进行异常统一处理是架构师或项目经理必须考

MVC 增加统一异常处理机制

原文地址:http://www.cnblogs.com/leoo2sk/archive/2008/11/05/1326655.html 摘要      本文将对"MVC公告发布系统"的发布公告功能添加日志功能和异常处理功能,借此来讨论ASP.NET MVC中拦截器的使用方法.一个小难题      我们继续完善"MVC公告发布系统",这次,我们的需求是对公告发布功能添加日志记录能力,即在发布公告前,记录一次,在公告发布成功后,再记录一次.然后还要使得其具备异常处理,即

JAVA基础教程之JAVA异常机制

今天我们主要来说一说JAVA异常机制方面的内容.自设JAVA学习群457036818,大家可以交流一下 一. 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误.本文主要传授的是一些滚与Java语言的异常处理.Java语言的异常处理框架,是Java语言健壮性的一个重要体现. Java把异常当作对象来处理,而且定义一个基类java.lang.Throwable作为所有异常的超类.在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception.J

java——异常机制

java的异常是一种处理程序中错误的机制,是程序运行过程中发生的一些异常事件. 异常类分类 例如:在公路上开车,汽车爆胎了这是可以处理的的这就是Exception:公路上有好多小石子,但是没有必须下车扫干净了再走这就是RunTimeException:如果汽车突然爆炸了就是Error. 五个关键字throws.throw.try.catch.finally 定义一个类,写一个存在异常的方法,并抛出 public class TestEX { void m(int i) throws Arithm

八、java中异常机制

一.为什么要有异常处理机制? java中的异常处理机制简单的讲就是try..catch..finally的使用. 程序难免会出现错误, 如果没有异常处理机制, 那么程序员在编写代码的时候就必须检查特定的结果, 并在程序的很多地方去处理它. 有了异常处理机制后,就不必在每个方法调用处都检查, 只需要用try包裹住可能发生异常的代码段, 这样做的好处是: 1.降低了代码的复杂度,正如上面所说的,不需要每个方法调用处都去检查: 2.将“描述正常情况下应该做什么事情”和“如果出了错怎么办” 的逻辑分开:

异常机制

1. 异常机制       异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果.这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆:可读性降低,将程序代码与处理异常的代码混爹在一起:由调用函数的程序

第六章:异常机制

第六章:异常机制 异常的定义 异常:在程序运行过程中出现的意外事件,导致程序中断执行. 异常处理 try...catch 语法:try{ //可能出现异常的代码}catch(异常类型 异常对象名){ //处理异常的代码:}执行过程:当try中的代码异常发生时抛出一个异常对象,该异常对象与catch中异常类型进行匹配,匹配成功进入catch块,否则不执行catch中代码(相当于异常未被处理).程序只有当异常处理成功后才能继续执行. try...catch...catch 语法:try{ //可能出

C++ Primer笔记2_四种类型转换_异常机制

1.类型转换 命名的强制类型转换: 有static_cast.dynamic_cast.const_cast.reinterpret_cast static_cast: 编译器隐式执行的任何类型转换都可以由static_cast完成 当一个较大的算术类型赋值给较小的类型时,可以用static_cast进行强制转换. 可以将void*指针转换为某一类型的指针 可以将基类指针强制转换为派生类指针,但是不安全. 无法将const转化为nonconst,这个只有const_cast才可以办得到 举例:

Java的异常机制

一.什么是异常:非正常的,不同寻常的,不是语法错误. 生活中,医生说你身体某个部位异常,该部位和正常相比,有点不同功能可能受损. 张三开车去上班,正常情况下,顺利到达公司 非正常情况下,车子坏了,走路去公司 异常指的 不是语法错误 ,语法错误编译通不过,不会产生字节码文件,根本不能运行 程序中:代码出现错误,程序就会停止运行. 异常处理是衡量一门语言是否成熟的标准之一.主流的java c++ c# 都有异常处理机制. 异常处理可以让程序有更好的容错性,使代码更健壮. 传统的c语言是没有异常处理的