J2EE项目异常处理
来源:互联网 发布:有免费的淘宝素材网吗 编辑:程序博客网 时间:2024/05/18 02:12
在表示层,主要是把页面传过来的值进行校验并转换成业务层需要的类型 ,而且调用业务层的方法,在表示层一定要弄清楚调用方法的是否会抛出unChecked异常,什么情况下会抛出这些异常,并作出正确的处理。
《一》
在异常处理方面主要做的工作是:
1:捕捉业务层抛出来的check异常,如在登录时的用户不存在异常,处理并跳转到相应的页面
2:处理表示层内部的一些Uncheck异常,如类型转换错误等,并跳转到相应的页面,比如生日中出现字母
3:处理全局异常,并且转发到 “系统错误”的页面,即所有异常的父类Exception
在业务层,主要进行业务活动,在异常方面做要做的工作是:
1:抛出用户自定义的流程异常,在表示层可以处理的异常(逻辑处理异常),比如在登录用户时,用户不存在的异常。对于流程异常交给调用者来处理,自己不处理。
2:对于其他异常,或底层抛出来的Uncheck异常,重新包装成uncheck异常,以BussinessException抛出。
在数据库层,主要惊醒数据库的相关操作,在异常方面主要做的工作是:
1:避免系统级的checked异常对业务系统的深度侵入,把底层抛出的不可恢复的异常,如SQLException,包装成DataAccessException(uncheck Exception)抛出,并释放相关资源,、
2:如果一个异常是可以恢复的,可以被调用者正确处理的,使用checked异常
《二》
异常记录:
1:如果捕获到一个异常,但是这个异常是可以处理的。则无需要记录异常
2:异常应该在最初产生的位置记录!
《三》
异常类的写法:我们在调用printStackTrace方法时,需要把所有的“起因异常”的信息也同时打印出来。所以我们需要覆写printStackTrace方法来显示全部的异常栈跟踪。包括嵌套异常的栈跟踪。
一个完整的支持嵌套的checked异常类源码如下。我们在这里暂且把它叫做NestedException。同样要设计一个unChecked异常类也与上面一样。只是需要继承RuntimeException。
- public NestedException extends Exception{
- private Throwable cause;
- public NestedException (String msg){
- super(msg);
- }
- public NestedException(String msg, Throwable ex){
- super(msg);
- This.cause = ex;
- }
- public Throwable getCause(){
- return (this.cause == null ? this :this.cause);
- }
- public getMessage(){
- String message = super.getMessage();
- Throwable cause = getCause();
- if(cause != null){
- message = message + “;nested Exception is ” + cause;
- }
- return message;
- }
- public void printStackTrace(PrintStream ps){
- if(getCause == null){
- super.printStackTrace(ps);
- }else{
- ps.println(this);
- getCause().printStackTrace(ps);
- }
- }
- public void printStackTrace(PrintWrite pw){
- if(getCause() == null){
- super.printStackTrace(pw);
- }
- else{
- pw.println(this);
- getCause().printStackTrace(pw);
- }
- }
- public void printStackTrace(){
- printStackTrace(System.error);
- }
- }
同样要设计一个unChecked异常类也与上面一样。只是需要继承RuntimeException。
总之:使用Checked Exception还是UnChecked Exception的原则,我的看法是根据需求而定。
如果你希望强制你的类调用者来处理异常,那么就用Checked Exception;
如果你不希望强制你的类调用者来处理异常,就用UnChecked。
如果你希望强制你的类调用者来处理异常,那么就用Checked Exception;
如果你不希望强制你的类调用者来处理异常,就用UnChecked。
参考:
http://www.javaeye.com/topic/2038?page=7
http://www.javaeye.com/topic/72170?page=2
http://www-128.ibm.com/developerworks/cn/java/j-jtp05254/index.html
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- J2EE项目异常处理
- [Java] J2EE项目异常处理
- J2EE项目中异常处理
- J2EE项目中的异常处理
- 远程桌面访问之VNC使用指南
- 抛硬币模拟(Coin Tossing Simulation)
- UpdatePanel 控件
- 25岁以后必须懂得的66件事情(忘了转自哪了)
- 疯狂的程序员43
- J2EE项目异常处理
- 股票涨跌的心理学原理: 过度自信理论
- kvm的应用
- 网球握拍方法-图解
- 精妙的Sql语句
- 疯狂的程序员44
- 用Apache JMeter进行性能测试之五(使用同步定时器元件)
- init getty login shell
- [java]JUnit Cookbook