java程序设计(清华课件)_第6章.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java程序设计(清华课件)_第6章

第6章 Java语言中的异常 异常 Java把程序运算中可能遇到的错误分为两类: 一类是非致命性的,通过某种修正后程序还能继续执行。这类错误称作异常。 另一类是致命性的,即程序遇到了非常严重的不正常状态,不能简单地恢复执行,这就是错误。 Java提供了异常处理机制,在Exception类中定义了程序产生异常的条件。 对待异常通常并不是简单地结束程序,而是转去执行某段特殊代码处理这个异常,设法恢复程序继续执行。 Java实现了C++风格的异常。 当程序中发生异常时,称程序产生了一个异常事件,相应地生成异常对象。 生成的异常对象传递给Java运行时系统。 异常产生和提交的这一过程称为抛出。 异常发生时,Java运行时系统从生成对象的代码块开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法处理,这一过程称为捕获。 所有的包中都定义了异常类和错误类。 Exception类是所有异常的父类 Error类是所有错误的父类,这两个类同时又是Throwable的子类。 异常和错误类的层次结构如图所示: 异常示例 public class HelloWorld { public static void main (String args[ ]) { int i = 0; String greetings [ ] = {Hello world!, No, I mean it!, HELLO WORLD!! }; while (i 4) { System.out.println (greetings[i]); i++; } }} 程序输出如下所示: java HelloWorld Hello World! No, I mean it! HELLO WORLD!! java.lang.ArrayIndexOutOfBoundsExcepiton: 3 at HelloWorlds.main(HelloWorld.java:12) 异常处理 对所发生的异常进行的处理就是异常处理。 异常处理的重要性在于,程序不但能发现异常,还要捕获异常。 try,catch和finally语句 使用try语句括住可能抛出异常的代码段,用catch语句指明要捕获的异常及相应的处理代码。 try与catch语句的语法格式如下: try { // 此处为抛出具体异常的代码 } catch (ExceptionType1 e) { // 抛出ExceptionType1异常时要执行的代码 } catch (ExceptionType2 e) { // 抛出ExceptionType2异常时要执行的代码 ... } catch (ExceptionTypek e) { // 抛出ExceptionTypek异常时要执行的代码 } finally { // 必须执行的代码 } 其中,ExceptionType1,ExceptionType2,...,ExceptionTypek是产生的异常类型。 根据发生异常所属的类,找到对应的catch语句,然后执行其后的语句序列。 不论是否捕获到异常,总要执行finally后面的语句。 例6-1 try { startFaucet(); waterlawn(); } finally { stopFaucet(); } 再讨论前面的示例 public class HelloWorld { public static void main (String args[]) { int i = 0; String greetings [ ] = {Hello world!, No, I mena it!, HELLO WORLD!!“ }; while (i 4) { try { System.out.println (greetings[i]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(Re\|setting Index Value); i = -1; } catch (Exception e) { System.out.println(e.toString()); } finally { System.out.println(This is always printed); i++; } // while循环结束 } // 主函数main结束} 循环执行时,屏幕上显示的信息如下: Hello world! This is always printed No, I mean it! This is alw

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档