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。