ClassCastException 类型转换异常
ClassNotFoundException 未找到相应类异常
ArithmeticExceptuion 算术异常
ArrayIndexOutOfBoundsException 数组小标越界
ArrayStoreException 数组中包括含不兼容的值抛出异常
SQLException 操作数据库异常类
NullPointerException 空指针异常
NoSuchFieldException 字段未找到异常
NoSuchMethodException 方法未找到抛出的异常
NumberFormatException 字符串转换成数字抛出的异常
NegativeArraySizeException 数组元素个数为负数抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IOException 输入输出异常
IllegalAccessException 不允许访问某类异常
InstantiationException 当应用程序试图使用Class类中的newInstance()方法创建的一个类的实例,而指定的类对象无法被实例化时,抛出该异常
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常
捕捉异常
java语言的异常捕获结构由try、catch和finally3部分构成,try语句块存放的是可能发生异常的java语句;catch程序块在try语句块之后,用来激发被捕获的异常;finally语句块是异常处理结构的最后执行部分,无论try块中的代码如何退出,都将执行finally块.
语法:
try{
//程序代码块
}
catch(Exception1 e){
//对Exception1的处理
}
catch(Exception2 e){
//对Exception2的处理
}
......
finally{
//程序块
}
1.try-catch语句块
public class Take{
public static void main(String []args){
try{//try语句块中包含可能出现异常的程序代码
String str="zhangsan";//定义字符串变量
System.out.println(str+"年龄是:");//输出
int age=Integer.parseInt("20L");//数据类型转换
System.out.println(age);
}catch(Exception e){//catch语句块用来获取异常信息
e.printStackTrace();//输出异常性质
}
System.out.println("program over");//输出信息
}
}
程序依然有最后的提示信息,没有因为异常而终止.
用try-catch语句块进行处理,当try代码块中发生异常时,程序就会调转到catch代码块中执行,执行完catch中的程序代码后,将继续执行catch代码块后的其他代码,而不会执行try代码块中发生异常语句块的代码.
注意: Exception是try代码块专递给catch代码块的变量类型,e是变量名.catch代码块中语句”e.getMessage();”用于输出错误性质.通常,异常处理用以下3个函数来获取异常的有关信息.
1.getMessage()函数:输出错误性质.
2.toString()函数:给出异常的类型与性质
3.printStackTrace()函数:指出异常的性质、性质、栈层次及出现在程序中的位置
注意: 有时为了编程简单忽略catch语句后的代码块,这样try-catch语句中就成了一种摆设,一旦程序在运行过程中出现了异常,就会导致最终运行结果与期望的不一致,而错误发生的原因很难查找,因此要养成良好的编程习惯,最好在catch代码块中写入处理异常的代码.
finally语句块
完整的异常处理语句一定要包含finally,无论程序中有无异常发生,并且无论之间的try-catch是否顺利执行完毕,都会执行finally.
以下4种情况,finally块不会被执行.
1.在finally语句中发生了异常.
2.在前面的代码中使用了System.exit()退出程序.
3.程序所在线程死亡.
4.关闭CPU.
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,可以使用throws、throw关键字在方法中抛出异常.
1.使用throws关键字抛出异常
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可能使用逗号分隔.
2.使用throw关键字抛出异常
throw关键字通常用于方法体中,并且用于抛出一个异常对象.程序在执行到throw语句时立即终止,它后面的语句都不执行.