java幻灯片-第08章-异常

上传人:F****n 文档编号:88134865 上传时间:2019-04-19 格式:PPT 页数:39 大小:154.50KB
返回 下载 相关 举报
java幻灯片-第08章-异常_第1页
第1页 / 共39页
java幻灯片-第08章-异常_第2页
第2页 / 共39页
java幻灯片-第08章-异常_第3页
第3页 / 共39页
java幻灯片-第08章-异常_第4页
第4页 / 共39页
java幻灯片-第08章-异常_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《java幻灯片-第08章-异常》由会员分享,可在线阅读,更多相关《java幻灯片-第08章-异常(39页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计,第8章 Java异常处理,8.1 什么是异常 8.2异常处理机制 8.3异常的处理 8.4 创建用户异常类,8.1 什么是异常,异常(Exception)也叫例外。在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题、软件设计错误、缺陷等导致的程序错误。在软件开发过程中,很多情况都将导致异常的产生,例如: (1) 想打开的文件不存在; (2) 网络连接中断; (3) 操作数超出预定范围; (4) 正在装载的类文件丢失; (5) 访问的数据库打不开; 可见,在程序中产生异常的现象是非常普遍的。在Java编程语言中,对异常的处理有非常完备的机制。异常本身作为一个对象,产

2、生异常就是产生一个异常对象。这个对象可能由应用程序本身产生,也可能由 Java 虚拟机产生,这取决于产生异常的类型。该异常对象中包括了异常事件的类型以及发生异常时应用程序目前的状态和调用过程。请看下面产生异常的例子。,8.1 什么是异常,【例8-1】文件操作将产生异常 / Exception1.java import java.io.*; class Exception1 public static void main(String args) FileInputStream fis =new FileInputStream(“text.txt“); int b; while(b=fis.re

3、ad()!=-1) System.out.print(b); fis.close(); ,8.1 什么是异常,当编译这个程序时,屏幕上会输出下面的信息: D:userchap08javac Exception1.java Exception1.java:5: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown FileInputStream fis = new FileInputStream(“text.txt“); Exception1.java:7: unre

4、ported 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 errors,8.1 什么是异常,【例 8-2】数组下标超界的例子 / Exception2.java public class Exception2 public

5、 static void main (String args) String langs = “Java“,“Visaul Basic“,“C+“; int i = 0; while (i 4) System.out.println (langsi); i+; ,8.1 什么是异常,程序的编译和运行结果如下: D:userchap08javac Exception2.java D:userchap08java Exception2 Java Visaul Basic C+ Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsExc

6、eption: 3 at Exception2.main(Exception2.java:8) 上面的例子编译可以通过,但运行时出现异常信息被抛出。在其循环被执行四次之后,数组下标溢出,程序终止,并带有错误信息,就象前面所示的程序那样。,8.1 什么是异常,【例 8-3】被0除的例子 / Exception3.java class Exception3 public static void main(String args) int a=0; System.out.println(5/a); 我们编译这个程序得到其字节码文件,然后运行它,屏幕上的显示如下: D:userchap08javac

7、Exception3.java D:userchap08java Exception3 Exception in thread “main“ java.lang.ArithmeticException: / by zero at Exception3.main(Exception3.java:5) 因为除数不能为0,所以在程序运行的时候出现了除以0溢出的异常事件。,8.1 什么是异常,在上面的三个例子中,我们都遇到了异常。屏幕上所显示的信息 java.io.IOException、 java.io.FileNotFoundException、 java.lang.ArrayIndexOutOf

8、BoundsException 以及java.lang.ArithmeticException 分别指明了异常的类型以及异常所在的包。同时我们也可以看到,对于某些异常,在程序中必须对它进行处理,否则编译程序会指出错误(如例8-1)。但对另一些异常,在程序中可以不做处理,而直接由运行时系统来处理(如例8-3)。在下节中,我们将详细了解这两类异常,以及在程序中如何处理这两类异常。,第8章 Java异常处理,8.1 什么是异常 8.2异常处理机制 8.3异常的处理 8.4 创建用户异常类,8.2异常处理机制,8.2.1 Java的异常处理机制 8.2.2 异常类的类层次 8.2.3 Throwabl

9、e类的常用方法,8.2.1 Java的异常处理机制,在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。这个对象可能是由正在运行的方法生成,也可能由Java虚拟机生成,其中包含一些信息指明异常事件的类型以及当异常发生时程序的运行状态等。 Java语言提供两种处理异常的机制: (1)捕获异常 在Java程序运行过程中系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。这是一种积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的

10、方法,则运行时系统将终止,相应的Java程序也将退出。 (2)声明抛弃异常 当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。,8.2.2 异常类的类层次,前面已经提到,Java是采用面向对象的方法来处理错误的,一个异常事件是由一个异常对象来代表的。这些异常对象都对应于类java.lang.Throwable及其子类。下面我们就来看一下异常类的层次。 在java类库的每个包中都定义了自己的异常类,所有这些类都直接或间接地继承于类Throwable。图8-1列举了一些异常类并指明了它们的继承关系。 从图8-1可以

11、看出,Java中的异常事件分为两大类。一类继承于类Error,它的继承关系如下: java.lang.Object java.lang.Throwable java.lang.Error 常见的错误类有AnnotationFormatError, AssertionError, AWTError, LinkageError, CoderMalfunctionError, FactoryConfigurationError, ThreadDeath, VirtualMachineError, TransformerFactoryConfigurationError等,包括动态链接失败、线程死锁、

12、图形界面错误、虚拟机错误等,通常Java程序不应该捕获这类异常,也不会抛弃这种异常。,8.2.2 异常类的类层次,另外一类异常则继承于类Exception,这是Java程序中所大量处理的异常。它的继承关系如下: java.lang.Object java.lang.Throwable java.lang.Exception 常见的异常类有:AclNotFoundException, ApplicationException, AWTException, BackingStoreException, ClassNotFoundException, CloneNotSupportedExcepti

13、on, DataFormatException, DestroyFailedException, ExecutionException, PrintException, GeneralSecurityException, InterruptedException, InvalidPreferencesFormatException, ParseException, RuntimeException, SAXException, SQLException, TimeoutException, TransformerException, UnsupportedCallbackException,

14、UnsupportedLookAndFeelException, URISyntaxException, UserException, XAException, XMLParseException, XPathException 等 其中包括了运行时异常和非运行时异常。,8.2.2 异常类的类层次,8.2.2 异常类的类层次,常见的运行时异常如下: (1) 类型转换异常ClassCastException String strName=new string(“123”); int nNumber=(int)strName; (2) 数组超界异常ArrayIndexOutBoundsExcept

15、ion int b=new int10; b10=1000; (3) 指定数组维数为负值异常NegativeArraySizeException b-1=1001;,(4) 算术异常ArithmeticException int b=0; a=500/b; (5) Java系统内部异常InternalException JVM抛出的异常。 (6) 类型不符合异常IncompatibleTypeException int n=12345; String s=(String)n; (7) 内存溢出异常OutOfMemeoryException (8) 没有找到类定义异常NoClassDefFoun

16、dException aClass aa=new aClas(); /但aClass类未定义。 (9) 空指针异常 NullPointerException int b ; b0=99; /没有实例化,就访问,将产生空指针。,8.2.2 异常类的类层次,常见的非运行时异常如下: (1) ClassNotFoundException :找不到类或接口所产生的异常 (2) CloneNotSupportedException:使用对象的 clone 方法但无法执行 Cloneable 所产生的异常。 (3) IllegalAccessException :类定义不明确所产生的异常。例如:类不为 public ,或是包含一个类定义在另一个类库内。 (4) IOException :在一般情况下不能完成I/O操作所产生的异常。 (5) EOFException: 打开文件没有数据可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号