Java异常处理

来源:互联网 发布:手机号码免费定位软件 编辑:程序博客网 时间:2024/06/14 08:02

注意:

 *    1.当程序可能出现多种异常,而且又要为这些异常一一处理时,后面依次列写catch语句块 *    2.但所列写的catch应该满足从子类到父类的异常处理,如上面,第一和二两个异常都是Exception的子类 *    3.finally语句跟在catch语句后面,用来实行一些出现异常后要进行的处理 *    4.处理运行时异常时,采用逻辑去合理规避,同时辅助try_catch处理 *    5.在多重catch后面,可以加上一个catch(Exception e)癞处理可能被遗漏的异常 *    6.对于不确定的代码,可以加上try_catch,处理潜在的异常 *    7.尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出 *    8.尽量添加finally语句块去释放占用的资源

代码实例:

public class Try_catch {    public static void main(String[] args){        Scanner input=new Scanner(System.in);        try{            System.out.println("请输入第一个数:");            int one=input.nextInt();            System.out.println("请输入第二个数:");            int two=input.nextInt();            System.out.println("两数相除得:"+one/two);        }catch(InputMismatchException e){            e.printStackTrace();            System.out.println("请输入数字!!!");        }catch(ArithmeticException e){            System.out.println("除数不能为零!!!");            e.printStackTrace();        }catch(Exception e){            e.printStackTrace();            System.out.println("未知的异常!!!");        }finally{            System.out.println("finally语句块用来善后,比如出现异常后关闭一些文件等");        }        System.out.println("程序结束!");    }}

自定义异常:

注意:自定义异常类必须继承于与之相近的异常类或是Exception
【由于有了含参的构造器,编译器便不会再给分匹配无参构造器,而有时候需要使用,所以可以再添加一个无参的构造器】

public class Custom_Exception extends Exception{    public Custom_Exception(){    }    public Custom_Exception(String message){//含参的构造器        super(message);    }}

异常链:

initCause()方法对异常进行包装的,目的为了出了问题的时候能够追根究底。因为一个项目,越往底层,可能抛出的异常类型会用很多,如果你在上层想要处理这些异常,你就需要挨个的写很多catch语句块来捕捉异常,这样是很麻烦的。如果我们对底层抛出的异常捕获后,抛出一个新的统一的异常,会避免这个问题。

public class Exception_link {    public static void main(String[] args) {        Exception_link cs=new Exception_link();        try{            cs.test2();        }catch(Exception e){            e.printStackTrace();        }    }    public void test1() throws Custom_Exception{        //调用自定义的异常类        throw new Custom_Exception("喝酒别开车!");    }    public void test2(){        try{            test1();        }catch(Custom_Exception e){            //构造RuntimeException            RuntimeException newExc=new RuntimeException("司机一滴酒,亲人两行泪");            newExc.initCause(e);              //将原异常包装,抛出运行时异常                                                      throw newExc;        }    }}
原创粉丝点击