iTreasury中的异常处理

来源:互联网 发布:淘宝买增加付款方式 编辑:程序博客网 时间:2024/06/05 03:07

 1.关于异常

java.lang.Throwable是所有异常的父类,其直接子类分为Error, Exception 。

Error用来表示编译时和系统错误

Exception可以分为RuntimeException(unchecked Excetption)和非运行时异常。除了RuntimeException,其他的异常都是checked exception )

前者不需要coder手动的捕获或者抛出。例如NullPointerExcepion,你不需要每次使用一个对象时都要判断他是否为null。如果RuntimeException没有被捕获,那么程序会在到达main()函数,在程序退出前,自动调用异常的printStackTrace()方法。

例:

 

 

当然,运行时异常也可以在try catch中捕获。 

 

如果需要在异常后继续执行后面的程序。则需要使用try,但是在try内的发生异常后的代码不会被执行。例:

 

 

总结:

       对未检查的异常(unchecked exception )的几种处理方式:
        1、捕获
        2、继续抛出
        3、不处理
        对检查的异常(checked exception,除了RuntimeException,其他的异常都是checked exception )的几种处理方式:
        1、继续抛出,消极的方法,一直可以抛到java虚拟机来处理
        2、用try...catch捕获
        注意,对于检查的异常必须处理,或者必须捕获或者必须抛出

 

2.iTreasury的异常处理

 

step1:一般如果抛出一般异常的话,直接new IException(msg);其中msg可以是自己定义的页面错误提示信息,也可以使用"Bill_E013"之类地

 

如果需要在EJB中抛出IRollbackException的话,需要先获得SessionContext。在声明IRollbackException的函数中,会调用SessionContext.setRollbackOnly()。手动回滚事务

 

 step2:

一直在C页面接受到异常。然后在catch页面中这样写

把exp放在session中。

 

step3:

转到V页面后动态引用<jsp:include page="/ShowMessage.jsp"/>

ShowMessage.jsp输出保存的collection的所有异常的msg,然后alert出来。

随机调用  messages.clear();立即清除Collection。