在项目中大家的异常都是怎么处理的?
比如DAO存产生的异常,Service的异常
我一般碰到异常了都是先try catch然后在catch中再throw一个自定义的Exception或者直接把产生的异常e抛到上一层,一直抛到action以后进行try catch处理这种做法对么?
有没有其他什么更好的解决办法?

解决方案 »

  1.   

    不知道你是什么框架
    做个基类,统一处理所有异常,根据异常和业务分发到不同的页面。从DAO把异常抛到最上层再通过基类处理。
      

  2.   

    就一直往上抛就行了  !
    甚至都不用自定义异常!
    直接让他无限的往上抛
    抛的action就处理吧!
    你的做法是对的
      

  3.   

    运行时异常,向上抛没有意义。
    非运行时异常,向上抛。但最终还要try catch.
         或者 try catch。
      

  4.   

    把编译时异常转抛成运行时异常,让上级调用用户决定是否去捕捉,这样方法的名字不会很难看,修改也容易,像Hibernate就是这样做的
      

  5.   

    写个异常类的基类,统一处理,根据异常和业务分发到不同的页面,如下:
    public class UserException extends RuntimeException { /**
     * 
     */
    private Exception e;//保存原始异常
    private String message = "系统出错,请重试,如再次出错,请与系统管理员联系,可能系统正在更新!";//处理后的异常消息

    /**
     * 不带参的构造方法
     *
     */
    public UserException(){
    }

    /**
     * 封装原始异常的构造方法
     * @param e
     */
    public UserException(Exception e){
    this.e = e;
    }

    /**
     * 用一个字符串构造异常
     * @param message
     */
    public UserException(String message){
    this.message = message;
    }

    /**
     * 由原如异常、字符串构造
     * @param e
     * @param message
     */
    public UserException(Exception e,String message){
    this.e = e;
    this.message = message;
    } public Exception getE() {
    return e;
    } public void setE(Exception e) {
    this.e = e;
    } public String getMessage() {
    return message;
    } public void setMessage(String message) {
    this.message = message;
    }

    }
      

  6.   

    异常一直往上抛是不合理的,如果到达action层,到达页面 出问题了就会显示在页面上 肯定不好
    异常无非是处理业务逻辑中的特殊情况 一般在大的应用中都是在service层中来处理
    由service中的业务逻辑来决定到底该如何来处理这个异常
      

  7.   

    关于异常处理的问题关闭
    发现一篇比较好的文章
    http://www.javaeye.com/topic/72170