我架构是ssh2,现在总监要求要把全部的异常都统一起来管理,不准在单个类或单个页面处理异常,我在网上找了很久也没有找到想要的代码,下面这句话的做法应该是我想要的,但我不知道具体是怎样做?请大家帮个忙,如果有写过的大牛们,指教一下小弟!如果是大型项目 我建议楼主进行自定义异常,当出现异常的时候抛出自定义的异常号,以此类推,最终在基类中对所有自定义异常进行捕获,根据传过来的异常编号做相应的异常处理,这种做法比较通用。

解决方案 »

  1.   

    举个例子:action的方法中这样控制异常:
    try{
      if (...) //有坏事发生
        throw new Exception(my_exception_id);
    } catch (Exception e) { mycapture(e);}定义基类
    public class MyActionSupport extends ActionSupport {
      public void mycapture(Exception e) {
        // 根据e.getMessage()判断是自定义异常还是系统异常
        int exceptionId = parseId(e); //自己写parseId()
        //个别处理
        switch(exceptionId){//......}
        //公共处理
        // 写入日志
        // 级别严重的,自动发邮件给管理员
        if (exceptionId > FATAL) {sendMail(e);}
        // 其它处理
      }
    }所有的action继承MyActionSupport
      

  2.   

    那如果出现异常,怎么跳转一个比较友好页面显示给客户端,是在catch里面写return ""吗?
    例如:是空指针异常!
      

  3.   


    你的基类也是一个Action
    Action里怎样跳转页面,随心所欲~
    上面只是个简化版的示例,如果要传递更多关于某个特定错误的信息,mycapture()可以增加参数