Java中try catch的使用 Java中try、catch如何使用
Locpeng 人气:0Java中有两种处理异常的方式,分别是用throws抛出异常、用try、catch捕获异常。
try-catch
在Java
try-catch语句的语法格式:
try{ //代码块 }catch(Exception1 e){ //抛出异常后所要进行的操作 }
当try语句当中捕获到异常时,会将异常抛出到catch语句中匹配异常类型,当异常和catch后面的异常类型相匹配时,则catch语句将会执行。
举个最基础的例子,除数不能为0
try中的异常与catch后面的异常类型匹配的情况:
try{ int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码 System.out.println("输出结果为:" + i); }catch(ArithmeticException e){ e.printStackTrace(); System.out.println("编译报错,除数不能为0"); }
输出结果:
try中抛出的异常与catch后面的异常类型不匹配的情况:
try{ int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码 System.out.println("输出结果为:" + i); }catch(NullPointerException e){ e.printStackTrace(); System.out.println("编译报错,除数不能为0"); //因为异常类型不匹配所以该catch语句并未执行 }
输出结果:
一个try语句可以接多个catch语句
当有多个catch语句时,try部分的语句如果发生异常,就会在依次在各个catch语句中试图匹配异常类型。
try{ int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码 System.out.println("输出结果为:" + i); }catch(ArithmeticException e){ e.printStackTrace(); System.out.println("运算条件异常"); //try语句捕获的异常与该catch语句后的异常相匹配,所以执行该catch语句 }catch(NullPointerException e){ e.printStackTrace(); System.out.println("空指针异常"); //try语句捕获的异常与该catch语句后的异常不匹配,所以不执行该catch语句 }
JDK1.7之后还有一种不常用的写法:
try{ int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码 System.out.println("输出结果为:" + i); }catch (NullPointerException | ArithmeticException e) { e.printStackTrace(); if (e instanceof NullPointerException) System.out.println("空指针异常"); if (e instanceof ArithmeticException) System.out.println("运算条件异常"); }
这种写法需要通过instanceof 进行判断具体的异常类型。
两种写法的输出都是一样的:
在catch内部,通常下面的方法输出异常信息:
getMessage() 返回一个字符串对发生的异常进行描述。
printStackTrace() :打印异常信息出错的位置及原因。
加载全部内容