2024年3月7日发(作者:)
Exception类
Exception类称为非致命性类,它代表了另一种异常。发生该异常的程序,可以通过捕获处理后正常运行,保持程序的可读性及可靠性。在开发Java程序过程中进行的异常处理,主要就是针对该类及其子类的异常处理。对程序中可能发生的该类异常,应该尽可能进行处理,以保证程序在运行时,能够顺利执行,而不应该在异常发生后终止程序。
Exception类又根据错误发生的原因分为两种异常类型:RuntimeException异常和Runtime Exception之外的异常。
1.RuntimeException异常
RuntimeException异常也称为不检查异常(unchecked exception),是程序员编写了错误的程序导致,修改了该错误后,程序就可以继续执行。例如,学校制定校规,若有学生违反了校规,就相当于发生了一个RuntimeException异常。在程序中发生该异常的情况包括除数为0的运算、数组下标越界、对没有引用任何对象的变量进行操作等。当RuntimeExeption类或其子类所描述的异常发生后,可以不通过try-catch、throws语句捕获或抛出,在编译时是可以通过的,只是在运行时由Java虚拟机来抛出。
Java中提供的常见的RuntimeException异常如表1所示,这些异常类都是Runtime
Exception类的子类,表示了具体的一种不检查异常类型。
表1 RuntimeException异常类列表
异常类名称
ArithmeticException
ArrayStoreException
ClassCastException
IndexOutOfBoundsException
NegativeArraySizeException
NullPointerException
NumberFormatException
SecurityException
算术异常类
将与数组类型不兼容的值赋值给数组元素时抛出的异常
类型强制转换异常类
当某对象(如数组或字符串)的索引超出范围时抛出该异常
建立元素个数为负数的数组异常类
空指针异常类
字符串转换为数字异常类
小应用程序(Applet)执行浏览器的安全设置禁止的动作时抛出的异常
异常类含义
ArrayIndexOutOfBoundsException
数组下标越界异常类
StringIndexOutOfBoundsException
字符串索引超出范围异常
下面对表1中一些常见的不检查异常进行简要介绍。
ArithmeticException类
该类用来描述算术异常,例如在除法或求余运算中规定,除数不能为0,所以当除数为0时,则Java虚拟机抛出该异常。例如:
int num=9%0; //除数为0,抛出ArithmeticException异常
NullPointerException类
用来描述空指针异常,当引用变量值为null,试图通过“.”操作符对其进行访问时,抛出该异常。例如:
Date now=null;
String today=ng();
NullPointerException异常
//声明一个Date型变量now,但不引用任何对象
//试图通过“.”操作符进行访问,抛出
NumberFormatException类
用来描述字符串转换为数字时的异常。当字符串不是数字格式时,若将其转换为数字,则抛出该异常。例如:
String strage="24L";
int age=nt(strage); //试图将“24L”转换为int型时,抛出NumberFormatException异常
IndexOutOfBoundsException类
该类用来描述某对象的索引超出范围时的异常,其中ArrayIndexOutOfBoundsException类与StringIndexOutOfBoundsException类都继承自该类,它们分别用来描述数组下标越界异常和字符串索引超出范围异常。
例如,下面为抛出ArrayIndexOutOfBoundsException异常的情况:
int[] a=new int[3];
a[3]=9;
//定义一个数组,有3个元素a[0]、a[1]和a[2]
//试图对a[3]元素赋值,抛出ArrayIndexOutOfBoundsException异常
下面为抛出StringIndexOutOfBoundsException异常的情况:
String name="MingRi";
char c=(()); //抛出StringIndexOutOfBoundsException异常
ArrayStoreException类
该类用来描述数组试图存储类型不兼容的值时的异常。例如,对于一个Integer型数组,试图存储一个字符串,将抛出该异常:
Object[] num=new Integer[3]; //引用变量num引用Integer型数组对象
num[0]="MR"; //试图存储字符串值,抛出ArrayStoreException异常
ClassCastException类
该类用来描述强制类型转换时的异常。例如,强制转换String型为Integer型,将抛出该异常:
Object obj=new String("100");
Integer num=(Integer)obj;
ClassCastException异常
//引用变量obj引用String型对象
//强制转换obj为Integer类型,抛出2.RuntimeException之外的异常
RuntimeException之外的异常用来描述发生的意外的事情。例如,一个记者根据一个地址去采访一个重要人物,此时就会抛出该类异常:根据地址没有找到被采访的人或采访被拒绝。该类异常被称为检查异常(check exception),要求必须通过try-catch语句捕获或由throws关键字抛出,否则编译出错。
Java中提供的常见的检查异常如表2所示,每一个类都表示了具体的一种检查异常类型。
表2 常见检查异常类列表
异常类名称
ClassNotFoundException
EOFException
FileNotFoundException
IllegalAccessException
InstantiationException
IOException
为找到相应类异常
文件已结束异常类
文件未找到异常类
访问某类被拒绝时抛出的异常
试图通过newInstance()方法创建一个抽象类或抽象接口的实例时抛出该异常
输入输出异常类
异常类含义
NoSuchFieldException
NoSuchMethodException
SQLException
字段未找到异常
方法未找到异常
操作数据库异常类


发布评论