欢迎来到天天文库
浏览记录
ID:45849228
大小:194.50 KB
页数:19页
时间:2019-11-18
《Java程序设计基础与实践 第6章 异常处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章异常处理Java异常体系结构Java异常处理机制Java异常的捕获、处理方法Java自定义异常的定义、抛出方法6.1.1Java异常体系结构及处理机制⑴异常的概念异常(Exception)又称为例外,是指在程序运行过程中发生的非正常事件,如用户数据输入错误、程序代码错误、文件找不到、对空对象进行操作等错误。异常事件的发生,中断了程序的正常执行,可能带来严重的后果和损失。⑵Java异常体系结构Java系统中提供了许多异常类,这些类又称为标准异常类,分布在Java.lang、Java.io、Java.util和Java.net包中。所有的异常都是由一个称为Throw
2、able类及其子类派生出来的,其层次结构如图6.1所示。图6.1Java异常体系结构①ThrowableThrowable类是Java语言中所有错误或异常的超类。②Error与ExceptionError是Throwable的子类,是程序无法处理的错误。Exception类及其子类是Throwable的子类,是程序本身可以处理的异常,这种异常分运行时异常(RuntimeException)和非运行时异常两大类。③运行时异常和非运行时异常运行时异常是在Java虚拟机正常运行期间抛出的异常的超类,Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,会编译通过,
3、因此也称之为不检查异常(UncheckedException)。运行时异常说明ArithmeticException除数为0引起的异常。IndexOutOfBoundsException由于数组下标越界或字符访问越界引起异常。ArrayStoreException数组存储空间不够引起的异常。IllegalArgumentException使用非法参数引起的异常。IllegalThreadStateException线程调用某个方法而所处状态不适当,引起异常。NumberFormatException字符的UTF代码数据格式错误引起的异常。NegativeArraySi
4、zeException数组长度为负数产生的异常。NullPionterException访问一个空数组中的元素或访问空对象中的成员引起的异常。表6.1常见的运行时异常非运行时异常是RuntimeException以外的异常,也称为检查异常(CheckedException),类型上都属于CheckedException类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过,所以一般情况下编写程序时不自定义检查异常,常见非运行时异常如表6.2所示。非运行时异常说明ClassNotFoundException指定名字的类或接口未找到。Illega
5、lAccessException试图访问在另一个包的类中的方法,而该方法未声明为public。InstantiationException试图创建抽象类或接口的对象。InterruptedException其他线程中断了当前线程时发生的异常。IOException请求的I/O操作无法完成。EOFException在输入操作结束前遇到了文件尾。FileNotFoundException未找到指定的文件或目录所引起的异常。InterruptedIOExceptionI/O:操作被中断。UTFDataFormatExceptionUnicode文本格式的数据格式错误。SQL
6、Exception数据库访问错误。ProtocolException网络协议的执行错误。SocketException有关Socket的操作无法正常完成。UnknowHostException网络客户方指出的服务器地址有误。UnknownServiceException网络连接不能支持请求服务。表6.2常见的非运行时异常⑶Java异常分类Java异常类有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。⑷Java异常的处理方法Java采用面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,
7、则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。6.1.2异常的捕获和处理⑴异常处理的基本结构在Java中,异常处理的基本结构是:try{//可能出现特定异常的代码}catch(异常类型异常的变量名){//异常处理代码}finally{//异常发生,方法返回之前,最终执行的代码}⑵try、catch、finally三个语句块应注意的问题①try、catch、finally三个语句块均不能单独使用,三者可以组成try...catch...finally、try...catch、try...finally
此文档下载收益归作者所有