在书上看到这个:   catch 语句的顺序:
  捕获例外的顺序和catch语句的顺序有关,当捕获到一个例外时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,再安排父类。最后一句里说的“先安排子类,再安排父类”,指的是什么呢?谢谢!!!

解决方案 »

  1.   

    比如DataFormatException就是Exception的子类,则就应该先
    catch(DataFormatException e){}
    然后再
    catch(Exception e){}
      

  2.   

    其实你直接抛出Exception类捕获异常没错
    但是现在软件开发都是团队合作的
    你自己写的那个部分可读性就差
    不利于团队合作
      

  3.   

    先捕捉子类的信息有利于处理,有利于下面的工作继续进行。
    直到处理不了的时候才会让程序退出等等先捕捉业务上的错误,然后才是系统的。比如:
         try {
             ……
           } catch (FwkDBException fwkDbExp) {           //业务出错
                fwkDbExp.setCallerInfo(strUserId, XXXSearch.class);
                throw fwkDbExp;
            } catch (FwkSystemException fwkSysExp) {            /* 业务系统出错,捕捉并抛出 */
                throw fwkSysExp;
            } catch (AppException appExp) {            /* 应用系统出错 (内部的一个包装类,包装了数据库链接、业务处理流程等等)*/
                sysEx =……
                throw sysEx;
            } catch (Exception exp) {            /* 其他的例外发生*/
                sysEx =……
                throw sysEx;
            } finally {            /* 终了处理 */
                //释放链接
                //不使用的变量,用null代入
            }前面的都是Exception的子类,但是前面的不一定是依次继承的。
    但是错误的程度依次是递增的。初学者too。