X.d 笔记

小Web,大世界

0%

Java 异常处理。

小小说下Java里面的异常处理,貌似国内的程序员都很牛逼啊,个人参与的好多项目,根本没有异常处理,程序牛B到不会出异常还确实不异,当然我比不上他们,我的程序还是有异常的,所以这里谈下我的处理方式。

Java里面的异常处理有两种,捕获(try cacth)与抛出(throw),之所以看到没有异常处理不是没有在代码里没有看到这些关键字,而是只要是try cacth 就是清一色的那么一行 e.printStackTrace();要么就一个try cacth都看不到,不管到哪都是throws Exception,反正老子的程序不会有异常,这个代码多简洁省事啊~。

根据个人的总结,最好将就以下几点:

  1. 如果是业务逻辑层面,比如用户操作的顶层,直接操作包装好的数据的时候,必须用try cacth,因为你throws也没有地处理了,当然,你有神一般的底层的话,你会发现 “你的程序根本不会出错,至少eclipse上都没红点,cacth个毛啊”

  2. 如果是写的一些底层(并不说很牛的东西,就是很多地方都会用到的,比如Util什么的),必须用throws,如果你用try cacth了,就会发现上面说的“程序不会出错的情况”

  3. 如果是写的一些底层,且有流等类型的不稳定元素需要代码执行完后关,理所应该用 try+cacth+finally的组合了,怎么throws呢,很少在程序里见到的throw关键字就起作用了,先在cacth里面加入throw,再在方法上加上throws

好吧,就这么简单的三条。我希望牛人不要太多,神一样的代码我个凡人也不想多看,只想多多看看正常的程序。
前两点就不多说了,对于第三点,简单贴个代码示范一下

public static int test() throws Exception {
    InputStream in = null;
    try{
        System.out.println("start");
        Integer.parseInt("error");
    }catch(Exception e){
        System.out.println("error");
        throw(e);
    }finally{
        System.out.println("end");
        in.close();
    }
    return 0;
}

public static void main(String[] args){
    try {
        test();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("catch");
    }
}