JAVA课件-第08章-异常.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《JAVA课件-第08章-异常.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课件 08 异常
- 资源描述:
-
1、Java程序设计程序设计第第8章章 Java异常处理异常处理8.1 什么是异常8.2异常处理机制8.3异常的处理8.4 创建用户异常类8.1 什么是异常什么是异常l异常异常(Exception)也叫例外。在也叫例外。在Java编程语言中,异常就是编程语言中,异常就是程序在运行过程中由于硬件设备问题、软件设计错误、缺程序在运行过程中由于硬件设备问题、软件设计错误、缺陷等导致的程序错误。在软件开发过程中,很多情况都将陷等导致的程序错误。在软件开发过程中,很多情况都将导致异常的产生,例如:导致异常的产生,例如: (1) 想打开的文件不存在;想打开的文件不存在; (2) 网络连接中断;网络连接中断;
2、(3) 操作数超出预定范围;操作数超出预定范围; (4) 正在装载的类文件丢失;正在装载的类文件丢失; (5) 访问的数据库打不开;访问的数据库打不开;l可见,在程序中产生异常的现象是非常普遍的。在可见,在程序中产生异常的现象是非常普遍的。在Java编编程语言中,对异常的处理有非常完备的机制。异常本身作程语言中,对异常的处理有非常完备的机制。异常本身作为一个对象,产生异常就是产生一个异常对象。这个对象为一个对象,产生异常就是产生一个异常对象。这个对象可能由应用程序本身产生,也可能由可能由应用程序本身产生,也可能由 Java 虚拟机产生,虚拟机产生,这取决于产生异常的类型。该异常对象中包括了异常
3、事件这取决于产生异常的类型。该异常对象中包括了异常事件的类型以及发生异常时应用程序目前的状态和调用过程。的类型以及发生异常时应用程序目前的状态和调用过程。请看下面产生异常的例子。请看下面产生异常的例子。8.1 什么是异常什么是异常【例8-1】文件操作将产生异常文件操作将产生异常/ Exception1.javaimport java.io.*;class Exception1 public static void main(String args) FileInputStream fis =new FileInputStream(text.txt); int b; while(b=fis.re
4、ad()!=-1) System.out.print(b); fis.close(); 8.1 什么是异常什么是异常当编译这个程序时,屏幕上会输出下面的信息:当编译这个程序时,屏幕上会输出下面的信息:D:userchap08javac Exception1.javaException1.java:5: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown FileInputStream fis = new FileInputStream(text.txt); Exc
5、eption1.java:7: unreported exception java.io.IOException; must be caught or declared to be thrown while(b=fis.read()!=-1) Exception1.java:10: unreported exception java.io.IOException; must be caught ordeclared to be thrown fis.close(); 3 errors8.1 什么是异常什么是异常【例 8-2】数组下标超界的例子数组下标超界的例子/ Exception2.java
6、public class Exception2 public static void main (String args) String langs = Java,Visaul Basic,C+;int i = 0; while (i javac Exception2.java D:userchap08java Exception2JavaVisaul BasicC+Exception in thread main java.lang.ArrayIndexOutOfBoundsException: 3at Exception2.main(Exception2.java:8)上面的例子编译可以通
7、过,但运行时出现异常信息被抛出。上面的例子编译可以通过,但运行时出现异常信息被抛出。在其循环被执行四次之后,数组下标溢出,程序终止,并在其循环被执行四次之后,数组下标溢出,程序终止,并带有错误信息,就象前面所示的程序那样。带有错误信息,就象前面所示的程序那样。8.1 什么是异常什么是异常【例 8-3】被被0除的例子除的例子/ Exception3.javaclass Exception3 public static void main(String args) int a=0; System.out.println(5/a); 我们编译这个程序得到其字节码文件,然后运行它,屏幕上的显示我们编译
8、这个程序得到其字节码文件,然后运行它,屏幕上的显示如下:如下:D:userchap08javac Exception3.javaD:userchap08java Exception3Exception in thread main java.lang.ArithmeticException: / by zero at Exception3.main(Exception3.java:5)因为除数不能为因为除数不能为0,所以在程序运行的时候出现了除以,所以在程序运行的时候出现了除以0溢出的异常事溢出的异常事件。件。8.1 8.1 什么是异常什么是异常 在上面的三个例子中,我们都遇到了异常。屏幕上在
9、上面的三个例子中,我们都遇到了异常。屏幕上所显示的信息所显示的信息 java.io.IOException、 java.io.FileNotFoundException、 java.lang.ArrayIndexOutOfBoundsException 以及以及java.lang.ArithmeticException 分别指明了异常的类型以及分别指明了异常的类型以及异常所在的包。同时我。同时我们也可以看到,对于某些异常,在程序中必须对它进们也可以看到,对于某些异常,在程序中必须对它进行处理,否则编译程序会指出错误行处理,否则编译程序会指出错误(如例如例8-1)。但对另。但对另一些异常,在程序
10、中可以不做处理,而直接由运行时一些异常,在程序中可以不做处理,而直接由运行时系统来处理系统来处理(如例如例8-3)。在下节中,我们将详细了解这。在下节中,我们将详细了解这两类异常,以及在程序中如何处理这两类异常。两类异常,以及在程序中如何处理这两类异常。 第第8章章 Java异常处理异常处理8.1 什么是异常8.2异常处理机制8.3异常的处理8.4 创建用户异常类8.2异常处理机制异常处理机制8.2.1 Java的异常处理机制8.2.2 异常类的类层次8.2.3 Throwable类的常用方法8.2.1 Java的异常处理机制的异常处理机制 在Java程序的执行过程中,如果出现了异常事件,就会
11、生成一个异常对象。这个对象可能是由正在运行的方法生成,也可能由Java虚拟机生成,其中包含一些信息指明异常事件的类型以及当异常发生时程序的运行状态等。 Java语言提供两种处理异常的机制: (1)捕获异常 在Java程序运行过程中系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。这是一种积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 (2)声明抛弃异常当Java程序运行时系统得到一
12、个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。8.2.2 异常类的类层次异常类的类层次 前面已经提到,前面已经提到,Java是采用面向对象的方法来处理错误的,一个异常是采用面向对象的方法来处理错误的,一个异常事件是由一个异常对象来代表的。这些异常对象都对应于类事件是由一个异常对象来代表的。这些异常对象都对应于类java.lang.Throwable及其子类。下面我们就来看一下异常类的层次。及其子类。下面我们就来看一下异常类的层次。 在在java类库的每个包中都定义了自己的异常类,所有这些类都直接或类库的每个包中都定义了自己的异常类,所有
13、这些类都直接或间接地继承于类间接地继承于类Throwable。图。图8-1列举了一些异常类并指明了它们的继列举了一些异常类并指明了它们的继承关系。承关系。 从图从图8-1可以看出,可以看出,Java中的异常事件分为两大类。一类继承于类中的异常事件分为两大类。一类继承于类Error,它的继承关系如下:它的继承关系如下: java.lang.Object java.lang.Throwable java.lang.Error 常见的错误类有常见的错误类有AnnotationFormatError, AssertionError, AWTError, LinkageError, CoderMalfu
14、nctionError, FactoryConfigurationError, ThreadDeath, VirtualMachineError, TransformerFactoryConfigurationError等,包括动态链接失败、线程死等,包括动态链接失败、线程死锁、图形界面错误、虚拟机错误等,通常锁、图形界面错误、虚拟机错误等,通常Java程序不应该捕获这类异常,程序不应该捕获这类异常,也不会抛弃这种异常也不会抛弃这种异常。 8.2.2 异常类的类层次异常类的类层次另外一类异常则继承于类另外一类异常则继承于类Exception,这是,这是Java程序中所大量处理的异常。程序中所大
15、量处理的异常。它的继承关系如下:它的继承关系如下: java.lang.Object java.lang.Throwable java.lang.Exception常见的异常类有:常见的异常类有:AclNotFoundException, ApplicationException, AWTException, BackingStoreException, ClassNotFoundException, CloneNotSupportedException, DataFormatException, DestroyFailedException, ExecutionException, Prin
16、tException, GeneralSecurityException, InterruptedException, InvalidPreferencesFormatException, ParseException, RuntimeException, SAXException, SQLException, TimeoutException, TransformerException, UnsupportedCallbackException, UnsupportedLookAndFeelException, URISyntaxException, UserException, XAExc
17、eption, XMLParseException, XPathException 等 其中包括了其中包括了运行时异常和和非运行时异常。 8.2.2 异常类的类层次异常类的类层次 8.2.2 异常类的类层次异常类的类层次 常见的运行时异常如下:常见的运行时异常如下:(1) 类型转换异常ClassCastExceptionString strName=new string(“123”);int nNumber=(int)strName; (2) 数组超界异常ArrayIndexOutBoundsExceptionint b=new int10;b10=1000;(3) 指定数组维数为负值异常Ne
18、gativeArraySizeExceptionb-1=1001;(4) 算术异常ArithmeticExceptionint b=0;a=500/b;(5) Java系统内部异常InternalExceptionJVM抛出的异常。(6) 类型不符合异常IncompatibleTypeExceptionint n=12345;String s=(String)n; (7) 内存溢出异常OutOfMemeoryException(8) 没有找到类定义异常NoClassDefFoundExceptionaClass aa=new aClas(); /但aClass类未定义。(9) 空指针异常 Nu
19、llPointerExceptionint b ;b0=99; /没有实例化,就访问,将产生空指针。8.2.2 异常类的类层次异常类的类层次 常见的非运行时异常如下:(1) ClassNotFoundException :找不到类或接口所产生的异常(2) CloneNotSupportedException:使用对象的 clone 方法但无法执行 Cloneable 所产生的异常。(3) IllegalAccessException :类定义不明确所产生的异常。例如:类不为 public ,或是包含一个类定义在另一个类库内。(4) IOException :在一般情况下不能完成I/O操作所产生
20、的异常。(5) EOFException: 打开文件没有数据可以读取所产生的异常(6) FileNotFoundException :在文件系统中,找不到文件名称或路径所产生(7) InterruptedIOException:目前线程等待执行,另一线程中断目前线程I/O运行所产生的异常 在Sun公司提供的各种API包中,如java.io,java.awt等,都提供不同情况下可能产生的异常。由于异常的种类非常多,需要读者实际运用中逐渐掌握。 8.2.3 Throwable类的常用方法类的常用方法 java.lng.Throwable类是所有Error类和Exception类的父类,常用的方法有
21、 fillInStackTrace() 、getLocalizedMessage() 、getMessage() 、printStackTrace()、printStackTrace(PrintStream) 、 printStackTrace(PrintWriter) 、toString()。(1) public native Throwable fillInStackTrace()填写执行堆栈跟踪信息。 该方法在应用程序重新抛出错误或异常时有用。例如: try a = b / c; catch(ArithmeticThrowable e) a = Number.MAX_VALUE; thr
展开阅读全文