第7的讲 异常处理.ppt

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

Exception 的概念 Exception 是在程序运行时打断正常程序流程的异常的情况 试图打开的文件不存在 网络链接中断 操作符越界 要加载类文件不存在 Java中定义了各种异常 异常(Exception)的层次结构 三类异常 系统错误-Error 由Java虚拟机抛出‘一般不由程序处理。 运行时异常- RuntimeException 程序设计或实现上的问题,如数组越界等。 异常-Exception 通常是由程序和外部环境因素引起的错误,并且可以被处理的。 如文件不存在,无效URL等。 异常的三种操作 声明异常 抛出异常 捕获异常 示例:ListOfNumbers try语句块 一般形式: try { Java statements //一条或多条可能产生异常的java语句。 } try 语句后必须跟随至少一个catch或finally语句块。 catch语句块 ? catch语句块提供错误处理。 ? 一般格式: catch (SomeThrowableObject variableName) { Java statements } ? SomeThrowableObject:能够被处理的异常类名,必须是throwable类的子类 ? variableName: 是异常处理程序中能够引用的代表被捕获异常的变量名称。 ? Java statements: 当捕获到异常时执行的java语句。 finally 语句块 在异常处理过程中,finally 语句块总是会被执行到: 无论有没有异常发生,也无论有没有异常被捕捉到 可选项: finally 语句块,通常位于catch 语句块的后面 可以用来释放try语句块中获得的资源 例如,关闭在try语句块中打开的文件 例: public Object pop( ) throws EmptyStackException { Object obj; if (size == 0) throw new EmptyStackException(); obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; } 抛出异常的throw语句: throw someThrowableObject 断言(assert) 断言:是一种错误处理机制,是在程序的开发和测试阶段使用的工具 断言(assert)是JDK1.4中引入的一个新的关键字,语法如下: 1、assert 条件 或者 2、assert 条件:表达式 这两个形式都会对“条件”进行判断, “条件”是一个布尔表达式。如果判断结果为假(false)则抛出AssertionError。在第二种形式中,“表达式”会传进AssertionError的构造函数中并转成一个消息字符串。 “表达式”部分的唯一目的就是生成一个消息字符串。 AssertionError对象并不存储表达式的值,因此你不可能在以后获取它。 断言使用示例 例如,如果要进行如下的计算时: double y=Math.sqrt(x); sqrt(x)是一个开平方运算,x必须为正才不会出错。为了检查传入的参数是否为正,可以使用如下的断言语句: assert x=0; double y=Math.sqrt(x); 或者 assert x=0:“ x=0”;//将“ x=0”传给AssertionError对象,从而可在出错时显示出来 double y=Math.sqrt(x); 当x为负值时, assert语句将抛出AssertionError异常,你就可以根据异常信息对程序的其它部分进行检查。 因为assert是一个新的关键字,因此在使用时需要告诉编译器你将使用该特性。在编译时必须使用-source 1.4选项,例如: javac -source 1.4 Myclass.class 打开和关闭断言功能 默认情况下,断言是关闭的。要通过-enableassertions或者-ea选项来运行程序以打开断言: java –ea Myapp 打开或者关闭断言是类装载器的功能。当断言功能被关闭时,类装载器会跳过那些和断言相关的代码,因此不会降低程序运行速度,即它们没有任何副作用。 也可以对某个类或某个包打开断言功能,例如: java –ea:Myclass –ea:com.mydx.mylib… 该命令打开类Myclass以及在com.mydx.mylib包中及其子包中全部类的断言功能(包名后的省略号是必须的

文档评论(0)

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

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

1亿VIP精品文档

相关文档