处理异常三部分:try catch finally。必须要有try,但不能只有try
try//必须有的,没有会报错
{
//可能出现异常的代码
}catch(Exception e){//万能异常
//捕获异常
//什么情况下执行?
//1.出现异常才会执行
//2.异常匹配才能执行
}catch(ArithmeticException e){
//by zero出现异常
}catch(NullPointerException e){
//空指针出现异常
}catch(lnPutMismatchException e){
//输入丢失数字类型异常
}
}finally{
//一定会被执行的代码,不管是否有异常的产生
}
1.程序正常运行。catch不执行
2.程序出现异常,异常被正确捕获。try中的异常后的代码不执行。正确捕获的catch执行,finally执行了。程序不中断
3.程序出现异常,异常没有被正确捕获。try中异常后的代码不执行。catch不执行。finally执行了。程序中断
多重catch:
1.可以对异常进行处理
2.只有一个catch会被执行
3.必须把Exception 放到最后。用来兜底
退出:
System.exit(1);
Class →JVM →Linuxc →mal
在catch中出现return的情况:先执行finally,然后转到return;finally后的代码不执行,程序不中断
ClassCastException 强制类型转换错误
NullPointerException 当应用程序试图在需要对象的地方使用null时,抛出该异常
ArrayIndexOutOfBoundsException 非法索引访问数组时抛出的异常 如索引为负或大于等于数组长度
NumberFormatException 当试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。 如:把“ABC”转成数字
InputMismatchException 欲得到的数据类型与实际输入的类型不匹配
throws声明异常
throw自动产thb 生一个异常