异常
在程序中如果出现了不正常或者错误的情况就说明出现了“异常”;
异常的分类
1.error:java虚拟机无法解除的异常。(不可以进行异常处理)
2.Exception:由于编译性错误或者偶然因素所引起的一般性问题,可以针对代码处理。(可以进行异常处理)
3.error和Exception都继承与Throwable类
处理异常的方法
1.遇到错误直接终止程序。
2.捕获异常,只有出现异常的情况下错误的才可以运行。
3.分为编译型(在源文件转换为可执行文件的过程)异常和运行时(可执行文件运行的过程)异常
常见的异常
1.FileNotFoundException//文件没有被找到
2.ClassNotFoundException//类没有被找到
3.NullPointerException//空指针异常
4.ArrayIndexOutOfBoundsException//数组越界异常
5.NumberFormatException//数字类型转换失败
6.ArithmeticException//分母不可为0
try-catch-finally
try{
//可能出现异常的代码
}
catch{
//处理异常的方式1
}
catch{
//处理异常的方式2
}
…
finally{
//一定可以执行的代码
}
说明
1.finally是可选的。
2.使用try可以使可能出现异常的代码包装起来,一旦出现异常,就会产生一个异常类的对象,在根据catch里的异常类型找到异常的处理方式。
3.异常一旦处理完成后,程序就会跳出try-catch代码段,继续执行其后代码。
4.catch的异常类型中如果没有父子关系,则谁在上谁在下都没关系。若有父子关系,则子类必须在父类之上,否则会报错。
代码示例
public class ExceptionText {
public static void main(String[] args) {
try {
int[] arr = new int[3];
System.out.println(arr[3]);
System.out.println("执行了吗");//若在代码执行过程中发现异常,则异常处以下的代码将不会被执行
}
catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("发生异常");
}//catch在相同的层次关系下可以不用管谁在前谁在后,若是父类例如Exception类必须在其子类之后
finally {
System.out.println("这里一定会被执行");
}//finally是发现异常后一定会执行的代码,即使catch中也发生了异常
//一般释放资源的代码会放在finally代码段中,例如:XXX.close()
}
}
throws
public static void method() throws IOEception{
}
说明
抛出方法体中的异常。