Exception类
Exception类称为非致命性类,它代表了另一种异常。发生该异常的程序,可以通过捕获处理后正常运行,保持程序的可读性及可靠性。在开发Java程序过程中进行的异常处理,主要就是针对该类及其子类的异常处理。对程序中可能发生的该类异常,应该尽可能进行处理,以保证程序在运行时,能够顺利执行,而不应该在异常发生后终止程序。
Exception类又根据错误发生的原因分为两种异常类型:RuntimeException异常和Runtime Exception之外的异常。
1.RuntimeException异常
RuntimeException异常也称为不检查异常(unchecked exception),是程序员编写了错误的程序导致,修改了该错误后,程序就可以继续执行。例如,学校制定校规,若有学生违反了校规,就相当于发生了一个RuntimeException异常。在程序中发生该异常的情况包括除数为0的运算、数组下标越界、对没有引用任何对象的变量进行操作等。当RuntimeExeption 类或其子类所描述的异常发生后,可以不通过try-catch、throws语句捕获或抛出,在编译时是可以通过的,只是在运行时由Java虚拟机来抛出。
Java中提供的常见的RuntimeExc eption异常如表1所示,这些异常类都是Runtime Exception类的子类,表示了具体的一种不检查异常类型。
表1 RuntimeException异常类列表
nullpointerexception: null
●●ArithmeticException类
该类用来描述算术异常,例如在除法或求余运算中规定,除数不能为0,所以当除数为0时,则Java虚拟机抛出该异常。例如:
int num=9%0; //除数为0,抛出ArithmeticException异常
●●NullPointerException类
用来描述空指针异常,当引用变量值为null,试图通过“.”操作符对其进行访问时,抛出该异常。例如:
Date now=null; //声明一个Date型变量now,但不引用任何对象
String String(); //试图通过“.”操作符进行访问,抛出NullPointerException异常
●●NumberFormatException类
用来描述字符串转换为数字时的异常。当字符串不是数字格式时,若将其转换为数字,则抛出该异常。例如:
String strage="24L";
int age=Integer.parseInt(strage); //试图将“24L”转换为int型时,抛出NumberFormatException异常
●●IndexOutOfBoundsException类
该类用来描述某对象的索引超出范围时的异常,其中ArrayIndexOutOfBoundsException 类与StringIndexOutOfBoundsException类都继承自该类,它们分别用来描述数组下标越界异常和字符串索引超出范围异常。
例如,下面为抛出ArrayIndexOutOfBoundsException异常的情况:
int[] a=new int[3]; //定义一个数组,有3个元素a[0]、a[1]和a[2]
a[3]=9; //试图对a[3]元素赋值,抛出ArrayIndexOutOfBoundsException异常
下面为抛出StringIndexOutOfBoundsException异常的情况:
String name="MingRi";
char c=name.charAt(name.length()); //抛出StringIndexOutOfBoundsException异常
●●ArrayStoreException类
该类用来描述数组试图存储类型不兼容的值时的异常。例如,对于一个Integer型数组,试图存储一个字符串,将抛出该异常:
Object[] num=new Integer[3]; //引用变量num引用Integer型数组对象
num[0]="MR"; //试图存储字符串值,抛出ArrayStoreException异常
●●ClassCastException类
该类用来描述强制类型转换时的异常。例如,强制转换String型为Integer型,将抛出该异常:
Object obj=new String("100"); //引用变量obj引用String型对象
Integer num=(Integer)obj; //强制转换obj为Integer类型,抛出ClassCastException异常
2.RuntimeException之外的异常
RuntimeException之外的异常用来描述发生的意外的事情。例如,一个记者根据一个地址去采访一个重要人物,此时就会抛出该类异常:根据地址没有到被采访的人或采访被拒绝。该类异常被称为检查异常(check exception),要求必须通过try-catch语句捕获或由throws 关键字抛出,否则编译出错。
Java中提供的常见的检查异常如表2所示,每一个类都表示了具体的一种检查异常类型。
表2 常见检查异常类列表
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论