- 方式一:try-catch-finally
- 过程一:“抛” ——程序在执行的过程当中,一旦出现异常,就会在出现异常的代码处,生成对应异常类的对象,并将此对象抛出。一旦抛出,此程序就不会执行其后的代码。
- 过程二:“抓” ——针对于过程1中抛出的异常对象,进行捕获处理。此捕获处理的过程,就称为抓。一旦将异常进行了处理,代码就可以继续执行。
- 基本结构
-
// try{ // ...... //可能产生异常的代码 // } // catch( 异常类型1 e ){ // ...... //当产生异常类型1型异常时的处置措施 // } // catch( 异常类型2 e ){ // ...... //当产生异常类型2型异常时的处置措施 // } // finally{ // ...... //无论是否发生异常,都无条件执行的语句 // }
-
- 使用细节
- 将可能出现异常的代码声明在try语句中,一旦代码出现异常,就会自动生成一个对应异常类的对象,并将此对象抛出。
- 针对于try中抛出的异常类的对象,使用其后的catch语句进行匹配。一旦匹配上,就进入catch语句块进行处理。一旦处理结束,代码就可继续向下执行。
- 如果声明了多个catch结构,不同的异常类型在不存在子父类关系的情况下,谁声明在上面,谁声明在下面均可。但如果多个异常类型满足子父类的关系,则必须将子类声明在父类结构的上面。否则,将会报错。
- catch中异常处理的方式:
- 自己编写输出的语句。System.out.println("出现异常");
- public void printStackTrace():打印异常的详细信息。
- public String getMessage():获取发生异常的原因。
-
Scanner in=new Scanner(System.in); try { String str=new String(in.nextLine()); System.out.println(Integer.valueOf(str)); }catch(NumberFormatException e){ e.printStackTrace(); System.out.println(e.getMessage()); }
- 编写代码过程中
- 对于运行时异常:通常就不进行显示的处理,一旦在程序执行过程中,出现运行时异常,那么根据异常的提示信息修改代码即可。
- 对于编译时异常:一定要进行处理,否则编译不通过。