问题是这样的一个项目中,如果出现异常,就在数据库中记录该异常出现的时间和信息
别人提供了我2种方法
1.继承Exception类,之后可能出现异常的地方都抛出我这个继承了Exception的类
2.写一静态方法,每个出现异常的地方都进行捕捉,之后再捕捉到的时候调用我的方法进行数据库操作
明显第一种比第二种好,但是我知道继承Exception后就不知道怎么写下去了请大家指教一下,谢谢!

解决方案 »

  1.   

    每次异常捕捉的时候 不输出异常信息 
    而在catc里面 调用一个方法
    该方法内容如下:
    将异常信息 用参数的方式传递给方法 方法将负责将以一些异常信息 插入数据库
      

  2.   

    1.继承Exception类,之后可能出现异常的地方都抛出我这个继承了Exception的类 自己写一个异常类,继承Exception类
    方法里面封装捕获到的异常
    在写一个方法,用来向数据库中插入异常信息
      

  3.   

    1.继承Exception类,之后可能出现异常的地方都抛出我这个继承了Exception的类 应该就是在构造的时候要把异常写到数据库里,那就写一个方法进行数据库操作,再在构造方法中调用该方法
      

  4.   

    写一个方法传一个string类型的错误信息,添加到数据库
      

  5.   

    貌似我的第一种方法有些行不通,比如我自定义的一场叫AutoException但是我有一个方法
    public void function() throws AutoException
    {
    throw new NullPointerException() ;
    }
    它抛出了一个NullPointerException,虽然我抛出了一个AutoException,但是因为
    NullPointerException的父类是Exception而不是AutoException,所以就算AutoException
    覆写任何Exception的方法都无效,因为AutoException根本不是NullPointerException的父类
    所以根本不会触发到任何方法.
    换句话说,一个方法中如果没有抛出和捕捉异常,但是此方法出现了一些异常,是无法捕获的,无法对未知异常进行处理,除非可以改变Exception
      

  6.   

    咱不讨论这个问题了...兄弟你能给我个切实可行的方法么?你说的方法也是在catch中调用是么?
      

  7.   

    不在catch中调用在哪调用捏..?
      

  8.   

    楼主需要搞清楚一个问题,你既然已经决定对这些异常进行捕获了,为什么还要继续往上抛?
    建议:
    try{
       //Exceptionable code.
    } catch(Exception ex){
       //你应该知道这里是什么异常吧?
       Util.saveExceptionIntoDB(ex.getMessage(), new Date()); //将异常信息和时间通过工具类保存到数据库中
       //如果还想继续往上抛,可以继续,但是不清楚楼为什么你还要throws
       throw new SelfDefineException();   
    }
      

  9.   

    我明白你的意思..但是我现在的需求就是捕获所有异常.已知的,未知的.我不可能所有的代码中都进行try和catch,我想能不能用一种方法在抛到最后的时候,进行捕获..但是我想了很久,除非改写Exception或者Throwable,应该没有啥方法..
    现在的任务就是捕获所有异常
    我也是听说,一个项目中可以捕获,连服务器负载过高都可以捕获.
      

  10.   


    这样也不现实吧,那你岂不是每个方法都要throws?
    应该对可能产生异常的地方进行异常捕获,1+1的地方根本没必要care. 至于你说的服务器负载过高,也可以捕获.不是很明白,这也是异常?如果不是那怎么抛出来的?我倒是碰到过一次,程序总是运行出错.catch Exception根本捕获不到,最后catch throwable捕获到了,是内存溢出.这个也只能证明,outOfMemory也是一个异常对象.但负载过高也有异常对象对应吗?