第02章异常.ppt
《第02章异常.ppt》由会员分享,可在线阅读,更多相关《第02章异常.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java高高级程序程序设计第一部分第一章Java入门基础第二章异常第三章JavaApplet类型第四章图形用户界面GUI(一)AWT第五章Java中的事件处理机制第六章图形用户界面GUI(二)SwingJava高高级程序程序设计第七章多线程第八章I/O输入输出流第九章Java数据库连接(JDBC)第十章Java网络编程第二部分第一章JavaAPI第二章Java与多媒体第三章JavaBean基础JavaJava高级程序设计高级程序设计异常异常第二章异常2.1 什么是异常 2.1.1 异常处理基础2.1.2 Java异常处理机制 2.2 异常的类型 2.2.1 Java异常类类型2.2.2 Jav
2、a异常类组成 2.3 未被捕获的异常2.3.1 未被捕获的异常2.4 trycatch语句 2.4.1 系统自定义异常的处理 2.4.2 使用多重catch语句、嵌套try语句 JavaJava高级程序设计高级程序设计异常异常第二章异常2.5 自定义异常与throw关键字2.5.1 创建自己的异常2.5.2 使用throw抛出异常2.6 throws与finally关键字2.6.1 使用throws声明异常2.6.2 使用finally关键字2.7 Java的内置异常 2.7.1 Java的内置异常JavaJava高级程序设计高级程序设计异常异常.1什么是异常语法错误和运行错误:对类似于C+这
3、样的高级编程语言来说,捕获程序出错信息最理想的阶段是在编译期间,即试图运行程序以前。然而,并非所有错误都能在编译期间检测到。有些问题可能会在程序运行时才暴露出来。例如,想打开的文件不存在、网络连接中断、受控操作数超出预定范围、除数为0等等。我们一般称编译时被检测出来的错误为语法法错误,这种错误一旦产生并不会生成运行代码。而另一种是运行运行错误,它是在程序运行时代码序列中产生的一种出错情况。这种运行错误倘若没有及时进行处理,可能会造成程序中断、数据遗失乃至系统崩溃等问题。这种运行错误也就是我们常说的“异常异常”。JavaJava高级程序设计高级程序设计异常异常.1什么是异常早期语言打开文件的程序
4、段readFileopenthefile;/打开文件readthefileintomemory;/将文件读入内存;closethefile;/关闭该文件;处理异常后的程序段readFileinterrorCode=0;openthefile;if(theFileOpen)determineitssize;/测定文件长度if(gotEnoughMemory)readthefileintomemory;if(readFailed)errorCode=-1;elseerrorCode=-2;elseerrorCode=-3;closethefile;returnerrorCode;JavaJava高
5、级程序设计高级程序设计异常异常.1什么是异常Java异常处理机制:为了能够及时有效地处理程序中的运行错误,Java中引入了异常和异常类的概念。在Java中定义了很多异常类,每个异常类都代表了一种常见的运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象。一旦一个异常对象产生了,就将其抛出到其调用程序中,发出已经发生问题的信号。然后,调用方法捕获抛出的异常,在可能时,再恢复回来。JavaJava高级程序设计高级程序设计异常异常.异常的类型Java异常体系图:Java
6、Java高级程序设计高级程序设计异常异常.异常的类型Java异常类类型描述:Throwable类是类库java.lang包中的一个类,它派生了两个子类:Exception和Error。其中Error类由系统保留,而Exception类则供应用程序使用。Error类描述了Java程序运行期间系统内部的错误以及资源耗尽的情况,如动态链接失败、虚拟机错误等,通常在Java编程语言中,Error类定义被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这样的错误时,建议让程序中断。Exception类是Java程序中大量处理的异常,该类又可分为两类:从RuntimeException衍生出来的异常和
7、衍生于Exception的其他子类的异常。RuntimeException类一般是由编程错误产生的,出现这类异常时,程序员需调试程序避免这类异常的产生,该类异常一般包括错误的造型、数组越界存取、空指针访问等。衍生于Exception的其他子类的异常一般是由于不可预测因素造成的,使得语法正确的程序出现了问题,该类异常一般包括试图越过文件尾继续存放、试图打开一个错误的URL等。JavaJava高级程序设计高级程序设计异常异常.异常的类型Exception类的构造方法有四个:public Exception()public Exception(String message)public Except
8、ion(String message,Throwable cause)public Exception(Throwable cause)第二个构造方法可以接受字符串参数传入的信息,该信息通常是对该异常所对应的错误的描述。第三个构造方法中cause参数保存出错原因,便于以后使用Throwable.getCause()方法重获,该参数可为空。JavaJava高级程序设计高级程序设计异常异常.异常的类型Java异常类的常用方法:Exception类的常用方法:JavaJava高级程序设计高级程序设计异常异常2.3 未被捕获的异常未被捕获的异常:下面的小程序包括一个故意导致被零除错误的表达式。clas
9、sExc0publicstaticvoidmain(Stringargs)intd=0;inta=42/d;下面是由标准javaJDK运行解释器执行该程序产生的输出:java.lang.ArithmeticException:/byzeroatExc0.main(Exc0.java:4)JavaJava高级程序设计高级程序设计异常异常2.3 未被捕获的异常未被捕获的异常:当Java运行时系统检查到被零除的情况,它构造一个新的异常对象然后引发该异常。这导致Exc0的执行停止,因为一旦一个异常被引发,它必须被一个异常处理程序捕获并且被立即处理。任何不是被你程序捕获的异常最终都会被该默认处理程序处理
10、。默认处理程序显示一个描述异常的字符串,打印异常发生处的堆栈轨迹并且终止程序。JavaJava高级程序设计高级程序设计异常异常2.3 未被捕获的异常未被捕获的异常:注意:类名Exc0,方法名main,文件名Exc0.java和行数4是怎样被包括在一个简单的堆栈使用轨迹中的。注意:引发的异常类型是Exception的一个名字叫做ArithmeticException的子类,该子类更明确的描述了何种类型的错误方法。JavaJava高级程序设计高级程序设计异常异常2.3 未被捕获的异常未被捕获的异常:下面是前面程序的另一个版本,它介绍了相同的错误,但是错误是在main()方法之外的另一个方法中产生的
11、:classExc1staticvoidsubroutine()intd=0;inta=10/d;publicstaticvoidmain(Stringargs)Exc1.subroutine();JavaJava高级程序设计高级程序设计异常异常2.3 未被捕获的异常未被捕获的异常:下面是由标准javaJDK运行解释器执行该程序产生的输出:java.lang.ArithmeticException:/byzeroatExc1.subroutine(Exc1.java:4)atExc1.main(Exc1.java:7)如你所见,栈底是main的第7行,该行调用了subroutine()方法。该
12、方法在第4行导致了异常。调用堆栈对于调试来说是很重要的,因为它查明了导致错误的精确的步骤。JavaJava高级程序设计高级程序设计异常异常2.4 trycatch语句使用try和catch尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常。这样做有两个好处。第一,它允许你修正错误。第二,它防止程序自动终止。为防止和处理一个运行时错误,需要把你所要监控的代码放进一个try块就可以了。紧跟着try块的,包括一个说明你希望捕获的错误类型的catch子句。JavaJava高级程序设计高级程序设计异常异常2.4 trycatch语句下面是一个异常处理块的通常形式:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第02章 异常 02
限制150内