Java——常见的异常类型
ClassCastException异常
这是强制类型转换错误,我们在定义多个子类时难免会使用到强制类型转换,而错误的强制类型转换就会产生这种异常
比如,我们定义一个父类Car,子类bm、bc
Car c1 = new bm();
Car c2 = new bc();
bm b = (bm)c1;
bm b1 = (bm)bc;//ClassCastException异常
因为强制类型转换的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,而代码块中的第四行属于同级别转换,会产生这种异常
NullPointerException异常
NullPointerException 是空指针异常,当引用没有指向具体的实例,在访问这个引用时就会产生空指针异常
public static void main(String[] args) {
String s = null;
s.length();//当想访问 s.length()时,因为字符串内容为空,会产生空指针异常
}
NumberFormatException异常
当把一个字符串转为数字类型时,若字符串中含有非数字,则有可能会产生这种错误
public class Lqbz {
public static void main(String[] args) {
String x = "1234e5";
int a1 = Integer.parseInt(x);
System.out.println(a1);
}
}
递归调用过多,栈溢出
在递归调用的时候需要把调用的状态保存起来,如果递归的深度达到一定程度,将产生堆栈溢出的异常。如果虚拟机的内存比较小,而程序对内存的要求比较高,则可能产生内存溢出错误。
public class Demo1 {
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
demo1.sum(10);
}
public int sum(int num){
return num+sum(num-1);
}
ArrayIndexOutOfBoundsException异常
数组越界异常
int [] a = new int[5];//01234
a[5]= 10;
代码中数组长度为五,但定义了第六个索引的值,因此引发数组越界异常
ArithmeticException异常
算数异常
当除数为0时,
如果运算的结果是无线循环的小数,并且在除的时候没有对结果设置精确的位数,这时就会抛出异常
int a = 10;
int b = 0;
System.out.println(a/b);