Java程序设计之网络编程.ppt
《Java程序设计之网络编程.ppt》由会员分享,可在线阅读,更多相关《Java程序设计之网络编程.ppt(41页珍藏版)》请在三一办公上搜索。
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.javaimport java.io.*;class Exception1 public static void main(String args)FileInputStream fis=new FileInputStream(text.txt);int b;while(b=
3、fis.read()!=-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);Exception1.java:7:unreported
4、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.javapublic class Exception2 public static void ma
5、in(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 Exception2JavaVisaul BasicC+Exception in thread main java.lang.ArrayIndexOutOfBoundsException:3at Exception2.main(Exception2.jav
6、a:8)上面的例子编译可以通过,但运行时出现异常信息被抛出。在其循环被执行四次之后,数组下标溢出,程序终止,并带有错误信息,就象前面所示的程序那样。,8.1 什么是异常,【例 8-3】被0除的例子/Exception3.javaclass Exception3 public static void main(String args)int a=0;System.out.println(5/a);我们编译这个程序得到其字节码文件,然后运行它,屏幕上的显示如下:D:userchap08javac Exception3.javaD:userchap08java Exception3Exception
7、 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.ArrayIndexOutOfBoundsException 以及java.lang.ArithmeticException 分别指明了异常的类型以及
8、异常所在的包。同时我们也可以看到,对于某些异常,在程序中必须对它进行处理,否则编译程序会指出错误(如例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 Throwable类的常用方法,8.2.1 Java的异常处理机制,在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。这个对象
9、可能是由正在运行的方法生成,也可能由Java虚拟机生成,其中包含一些信息指明异常事件的类型以及当异常发生时程序的运行状态等。Java语言提供两种处理异常的机制:(1)捕获异常 在Java程序运行过程中系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。这是一种积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。(2)声明抛弃异常当Java程序运行时系统得到一个异常对象时,如果一个方法并不知
10、道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。,8.2.2 异常类的类层次,前面已经提到,Java是采用面向对象的方法来处理错误的,一个异常事件是由一个异常对象来代表的。这些异常对象都对应于类java.lang.Throwable及其子类。下面我们就来看一下异常类的层次。在java类库的每个包中都定义了自己的异常类,所有这些类都直接或间接地继承于类Throwable。图8-1列举了一些异常类并指明了它们的继承关系。从图8-1可以看出,Java中的异常事件分为两大类。一类继承于类Error,它的继承关系如下:java.lang.Throwable 常见的错误类有Anno
11、tationFormatError,AssertionError,AWTError,LinkageError,CoderMalfunctionError,FactoryConfigurationError,ThreadDeath,VirtualMachineError,TransformerFactoryConfigurationError等,包括动态链接失败、线程死锁、图形界面错误、虚拟机错误等,通常Java程序不应该捕获这类异常,也不会抛弃这种异常。,8.2.2 异常类的类层次,另外一类异常则继承于类Exception,这是Java程序中所大量处理的异常。它的继承关系如下:常见的异常类有:
12、AclNotFoundException,ApplicationException,AWTException,BackingStoreException,ClassNotFoundException,CloneNotSupportedException,DataFormatException,DestroyFailedException,ExecutionException,PrintException,GeneralSecurityException,InterruptedException,InvalidPreferencesFormatException,ParseException,R
13、untimeException,SAXException,SQLException,TimeoutException,TransformerException,UnsupportedCallbackException,UnsupportedLookAndFeelException,URISyntaxException,UserException,XAException,XMLParseException,XPathException 等 其中包括了运行时异常和非运行时异常。,8.2.2 异常类的类层次,8.2.2 异常类的类层次,常见的运行时异常如下:(1)类型转换异常ClassCastExc
14、eptionString strName=new string(“123”);int nNumber=(int)strName;(2)数组超界异常ArrayIndexOutBoundsExceptionint b=new int10;b10=1000;(3)指定数组维数为负值异常NegativeArraySizeExceptionb-1=1001;,(4)算术异常ArithmeticExceptionint b=0;a=500/b;(5)Java系统内部异常InternalExceptionJVM抛出的异常。(6)类型不符合异常IncompatibleTypeExceptionint n=12
15、345;String s=(String)n;(7)内存溢出异常OutOfMemeoryException(8)没有找到类定义异常NoClassDefFoundExceptionaClass aa=new aClas();/但aClass类未定义。(9)空指针异常 NullPointerExceptionint b;b0=99;/没有实例化,就访问,将产生空指针。,8.2.2 异常类的类层次,常见的非运行时异常如下:(1)ClassNotFoundException:找不到类或接口所产生的异常(2)CloneNotSupportedException:使用对象的 clone 方法但无法执行 C
16、loneable 所产生的异常。(3)IllegalAccessException:类定义不明确所产生的异常。例如:类不为 public,或是包含一个类定义在另一个类库内。(4)IOException:在一般情况下不能完成I/O操作所产生的异常。(5)EOFException:打开文件没有数据可以读取所产生的异常(6)FileNotFoundException:在文件系统中,找不到文件名称或路径所产生(7)InterruptedIOException:目前线程等待执行,另一线程中断目前线程I/O运行所产生的异常 在Sun公司提供的各种API包中,如java.io,java.awt等,都提供不同
17、情况下可能产生的异常。由于异常的种类非常多,需要读者实际运用中逐渐掌握。,8.2.3 Throwable类的常用方法,java.lng.Throwable类是所有Error类和Exception类的父类,常用的方法有 fillInStackTrace()、getLocalizedMessage()、getMessage()、printStackTrace()、printStackTrace(PrintStream)、printStackTrace(PrintWriter)、toString()。(1)public native Throwable fillInStackTrace()填写执行堆
18、栈跟踪信息。该方法在应用程序重新抛出错误或异常时有用。例如:try a=b/c;catch(ArithmeticThrowable e)a=Number.MAX_VALUE;throw e.fillInStackTrace();(2)public String getLocalizedMessage()生成该 Throwable 的本地化描述。子类可能会覆盖该方法以便产生一个特定于本地的消息。对于未覆盖该方法的子类,缺省地返回调用 getMessage()的结果。,8.2.3 Throwable类的常用方法,(3)public String getMessage()返回该 throwable
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 网络 编程
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5436146.html