欢迎来到天天文库
浏览记录
ID:45055164
大小:316.00 KB
页数:19页
时间:2019-11-08
《JAVA的异常处理机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章Java的异常处理机制主要解决的问题:1、什么是错误与异常?2、造成Java异常的有哪些原因?3、什么是抛出?什么是捕获?4、Java有哪些异常对象呢?5、在程序中使用什么语句结构来处理异常呢?6、能否自己创建异常对象呢?本章主要内容1.Java异常的概念2.Java异常的处理方法3.总结提高6.1Java异常的概念Java的异常处理机制是用来处理程序运行时的错误的有效机制,以往需要由程序员完成的程序出错情况的判别,在Java中改为由系统承担。通过系统抛出的异常,程序可以很容易地捕获并处理发生的异常情况。6.1.1错误与异常根据错误的性质将运行错误分为两种类型:1.错误2.异常6.1.
2、2Java异常异常发生的原因有以下三种:1.Java虚拟机检测到了非正常的执行状态2.Java程序代码中的throw语句被执行。3.异步异常发生。6.2Java异常的处理方法1.try…catch…finally语句2.使用throw语句抛出异常对象3.使用throws子句抛出方法中的异常4.finally语句的作用5.创建自己的异常类6.3总结提高6.3.1Java的异常处理机制1.抛出异常Java是这样规定的:当语义限制被违反时,将会抛出(throw)异常,即产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。2.捕获异常异常抛出后,运行时系统
3、从生成异常对象的代码开始,沿方法的调用栈进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法,称为捕获(catch)异常。6.3.2Java提供的异常类Java中的异常类具有层次结构组织。如图所示。6.3.3Exception异常类的子类(1)RuntimeException运行时异常类(2)NoSuchMethodException方法未找到异常(3)java.awt.AWTException图形界面异常类(4)java.io.TOException输入输出异常类(5)Exception异常类的其它子类(1)RuntimeException类主要包括以下异常子类:·Arithm
4、eticException算术异常类;·ArrayStoreException数组下标越界异常类;·ClassCastException类型强制转换异常类;·IndexOutOfBoundsException下标越界异常类;·NullPointerException空指针异常类;·SecurityException违背安全原则异常类。(2)java.io.TOException类的子类有:·IOException:申请I/O操作没有正常完成。·EOFException:在输入操作正常结束前遇到了文件结束符。·FileNotFoundException:在文件系统中,没有找到由文件名字符串指定
5、的文件。(3)Exception异常类的其它子类:·EmptyStackException;·NoSuchFieldException;·NoSuchMethodException;·ClassNotFoundException;·CloneNotSupportedException;·IllegalAccessException;·InstantiationException;·InterruptedException。6.3.4Error错误类的子类(1)VirtualMachineError虚拟机错误OutOfMemoryError内存溢出错误StackOverflowError栈溢出
6、错误(2)LinkageError链接错误(3)NoClassDefNotFoundError类定义未找到错误(4)java.awt.AWTError图形界面错误6.3.5编译时对异常情况的检查1.可检测类和不可检测类不可检测的异常类是RuntimeException及其子类、Error及其子类,其他的异常类则是可检测的类。标准JavaAPI定义了许多异常类,既包括可检测的,也包括不可检测的。由程序定义的异常类也可以包含可检测类和不可检测类。2.可检测异常的处理在编译时,编译器分析哪些方法会产生可检测的异常,然后检查方法中的可检测异常的处理部分。例如,类Thread的方法sleep定义如下:
7、publicstaticvoidsleep(longmillis)throwsInterruptedException{…}3.不可检测的异常(运行时异常类)编译器对不可检测的异常类不进行检查。因为Java的设计者认为检测这些异常对Java程序的正确性方面帮助不大,而且这种情况发生的原因很多。对每一种情况都进行处理会很麻烦,所以这些异常在编译时不检查。因为这种错误可能发生在程序中的许多地方,恢复起来很困难或者
此文档下载收益归作者所有