- 1、本文档共75页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.1.1 异常的概念 程序8.1 NullPointerDemo.java 8.1.1 异常的概念 该输出内容说明程序发生了异常,第一行给出了异常名称,第二行给出了异常发生的位置。 Java语言规定当某个对象的引用为null时,调用该对象的方法或使用对象时就会产生NullPointerException异常。该程序中当调用circle的area()方法时,运行时系统产生了一个NullPointerException异常类对象并抛出,运行时系统就在产生异常对象的方法中寻找处理该异常对象的代码,若有则进入异常处理的代码,若没有(如本程序),运行时系统继续将异常对象抛给调用该方法的方法。 由于main() 方法是由JVM调用的,所以将异常抛给了JVM,JVM在标准输出设备上输出异常的名称。 8.1.1 异常的概念 再看下面一个程序,该程序试图从键盘上输入一个字符,然后输出。 程序8.2 InputChar.java import java.io.*; public class InputChar{ public static void main(String[] args){ System.out.print(Input a char:); char c=(char)System.in.read(); System.out.println(c = + c); } } 8.1.1 异常的概念 当编译该程序时会出现下列编译错误: Unhandled exception type IOException 上述编译错误说明程序没有处理IOException异常,该异常必须捕获或声明抛出,同时编译器指出了需要捕获异常的位置。 出现上述编译错误的原因是,read()方法在定义时声明抛出了IOException异常,因此程序中若调用该方法必须声明抛出异常或捕获异常。 8.1.2 Throwable类及其子类 Java语言的异常处理采用面向对象的方法,为各种异常建立了类层次。Java异常都是Throwable类的子类对象,Throwable类是Object类的直接子类,它定义在java.lang包中。 Throwable类有两个子类 一个是Error类 另一个是Exception类, 这两个子类又分别有若干个子类。 8.1.2 Throwable类及其子类 1.Error类 Error类描述的是系统内部错误,这样的错误很少出现。如果发生了这类错误,则除了通知用户及终止程序外,几乎什么也不能做,程序中一般不对这类错误处理。 Exception类 图8.1给出了Exception类及其常见子类的层次结构。 Exception类的子类一般又可分为两种类型:运行时异常和非运行时异常。 8.1.2 Throwable类及其子类 8.1.2 Throwable类及其子类 (1)运行时异常 RuntimeException类及其子类异常称为运行时异常。常见的运行时异常如图8.2所示。运行时异常是在程序运行时检测到的,可能发生在程序的任何地方且数量较大,因此编译器不对运行时异常(包括Error类的子类)处理,这种异常又称为免检异常(unchecked exception)。但程序运行时发生这种异常时运行时系统会把异常对象交给默认的异常处理程序,在控制台显示异常的内容及发生异常的位置。 程序8.1中的异常NullPointerException就是运行时异常。 8.1.2 Throwable类及其子类 下面介绍几种常见的运行时异常。 NullPointerException 空指针异常,即当某个对象的引用为null时调用该对象的方法或使用对象时就会产生该异常,如: int a[] = null; a[0] = 0; // 该语句发生异常 ArithmeticException 算术异常,在做整数的除法或整数求余运算时可能产生的异常,它是在除数为零时产生的异常。 int a = 5; int b = a / 0; // 该语句发生异常 注意:浮点数运算不会产生该类异常。如,1.0/0.0的结果为Infinity。 8.1.2 Throwable类及其子类 ClassCastException 对象转换异常,Java支持对象类型转换,若不符合转换的规定,则产生类转换异常,例如: Object o = new Object(); String s = (String)o; // 该语句发生异常 ArrayIndexOutOfBoundsException 数组下标越界异常,当引用数组元素的下标超出范围时产
文档评论(0)