1:做项目时,在可能出现异常的地方用try catch捕捉, 还是在类后面throws异常??
2:做项目时,在哪些地方应该要用try catch?不近捕捉可以吗?个人感觉:我写项目时没有注意异常方面,这样合理吗?  

解决方案 »

  1.   

    一个方法下有多个可捕获异常,每个异常都捕获,然后再抛出此方法的处理异常。
    void method() throws MethodException {
        try {
            submethod1();
         }catch(Submethod1Exception e) {
             throw new MethodException("cause by....Submethod1Exception");
         }catch(Submethod1Exception2 e) {
             throw new MethodException("cause by....Submethod1Exception2");
         }
         .
         .
         ...
    }
      

  2.   

    try..catch主要是在你项目出错的时候不至于一下出现报错页面,但是会影响性能,throws是将捕获的异常再次抛出,可以使得你获得跟多的异常信息
      

  3.   

    1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
    2.还是个人感觉在具体操作(增删改查),或者变量类型转换的地方都添加上异常处理,这样即使有错误也能准确定位,正确处理。
    3.不注意异常处理肯定不是个好习惯,楼主还是慢慢尝试的添加异常处理吧,等你习惯了你会发现添加异常处理是多么的明智。
      

  4.   

    你有能力处理的错误就是用try catch处理掉,无法处理或者要交给后面处理的就抛出去,不要简单的打印一下堆栈信息就完了
      

  5.   

    顶,try catch确实对系统性能有所影响。不过一般不要求过于灵敏的系统用下还是可以的。
      

  6.   

    这个要看你具体情况了,比如如果你捕获到的是SessionException(自己定义的异常,没登陆或session过期时抛得异常),这个时候就应该捕获,然后转到登录页面。还有就是数据库异常,这个也应该要捕获,然后转为自己包装的异常类再往上抛,这个时候上一层的方法捕获到这个异常,然后就看你是要继续捕获再包装,还是直接往上抛,很多异常是不捕获的。
      

  7.   

    这个就要看你提供的方法的对异常处理有什么要求了
    如果你的方法,是希望别人调用的时候自己处理异常,那么就throws
    否则,就自己处理比如
    希望别人处理异常,用户需要保证一些条件才能让你的方法正常执行
    如果用户没有确保条件,你就抛出异常,结束处理
    void somemethod() throws SomeException {
        if (some_exception_occurs_then_method_can_not_continue) {
            throw new SomeException(you_must_insure_conditions_to_continue_the_method);
        }
    }自己处理异常
    用户即使不确保调用方法的条件,你也希望方法继续执行,哪怕不能得到用户期望的结果
    void somemethod() {
        try {
            //do something
        } catch (Exception e) {
            //you_can_do_something_here_to_handle_the_exception
        }
    }
      

  8.   

    如果在每一个方法里都加try catch的话,不影响性能吗?还有代码量也增加不少?