ch09异常处理精选.pptVIP

  • 7
  • 0
  • 约3.91千字
  • 约 20页
  • 2017-03-24 发布于湖北
  • 举报
* * * * * * * * * * 第9章 异常处理 9.1.1生活中的异常 异常 Exception 不仅仅出现在程序中,生活中倒霉的事情经常会发生,这就是人们生活中遇到的“异常”。 例如,极限滑板运动在比赛的时候会做出各种高难度的动作,滑板运动员如果万一受伤,会有人上来给他包扎,或者送他上医院。他的滑板动作暂时停止,这就是处理异常的过程。 生活中的异常多种多样,时刻都有可能发生,无从预测。但是,生活中遇到异常之后,往往都延续着下一个工作:那就是处理异常。 软件中的异常和生活中异常的出现机制、处理方法具有很大的类似之处。接下来我们来看软件中的异常。 9.1 认识异常 9.1.2 软件中的异常 以最简单的例子为例:编写一个程序,能够让用户输入一个圆的半径,然后打印这个圆的面积。 用现有的知识,非常简单就可以编出代码如下: 9.1 认识异常 9.1.2 软件中的异常 以上程序能够打印正确的结果,但是软件的风浪就是运行中的不确定因素。该软件遇到一个不熟练的操作员,她输入了如下内容 也许她无法区别键盘上0和o 。点击“确定”,程序打印: 9.1 认识异常 9.1.3为什么要处理异常 上一节的程序,在输入不正确格式的内容时,实际上是发生了异常。 异常的出现,是在程序编译通过的情况下,程序运行过程中出现一些突发情况造成的。如果任由异常出现不去管它,会给软件带来什么样的问题呢? 很显然,首先是没有给用户一个较为友好的界面,比如用户不小心将“10”输成了“1o”,至少正确的软件应该提示用户“格式输错了”,让他重新输入。否则用户看到一堆乱糟糟的东西,你要他怎么处理? 另一个读者可能还没有意识到的问题是:异常不处理,会给程序带来安全隐患。 9.1 认识异常 9.1.4 异常机理 要处理异常,必须首先弄清异常的机理。 异常是以什么机理出现的呢?让我们再来看看前面异常出现的“症状”,该图中的内容可以标示如下: 9.1 认识异常 从中可以看出: 1. 异常类型为:java.lang.NumberFormatException。可以查看文档,找到该类,在文档中非常详细地说明了该异常出现的原因: 9.1.5 常见异常 异常类一般都是Exception的子类,类名以Exception结尾。如果碰到,去文档中找其原因。以下总结了一些常见的异常及其发生的原因: 1. ArithmeticException: 算术异常,如除数为0。 2. ArrayIndexOutOfBoundsException:数组越界异常。 3. ArrayStoreException:数组存储异常。 4. ClassCastException:类型转换异常。 5. IllegalArgumentException:无效参数异常。 6. NegativeArraySizeException:数组尺寸为负异常。 7. NullPointerException:未分配内存异常。 8. NumberFormatException:数字格式异常。 9. StringIndexOutOfBoundsException:字符串越界异常。 9.1 认识异常 9.2 异常的就地捕获 9.2.1 为什么要就地捕获 滑板运动员如果受伤,对他救助的方法有两种:现场救助和送医院让医生救助。 其中,现场救助就类似于“就地捕获”,也可以理解为:“在模块内部解决”。 很简单,当程序出现异常时,让程序跳转到一段处理程序就行了;就好像滑板运动员受伤时,我们马上启动救助措施。不过,如果他没有受伤,救助准备也得做,但是措施就不用采取了。 同样,在编程时,我们也得事先准备一段代码,当程序发生异常时,执行那段处理异常的代码,如果没有异常,那段代码也得备用在那边。 这就是异常的就地捕获 catch :当程序发生异常时,系统捕获异常,转而执行异常处理代码。 9.2 异常的就地捕获 9.2.2 如何就地捕获异常 怎么进行就地捕获呢?过程如下: 第1步:用try块将可能出现异常的代码包起来。 第2步:用catch块来捕获异常并处理异常。 第3步:如果有一些代码是不管异常是否出现都要运行的,用finally块将其包起来。 9.2.2 如何就地捕获异常 格式如下: try /*可能出现异常的代码*/ catch Exception1 ex1 /*处理异常*/ finally /*不管异常是否出现都要运行的代码*/ 9.2 异常的就地捕获 9.2.3 如何捕获多种异常 代码中可能出现的异常可能会有很多种类。如Java中常见的就有:未分配内存异常、未找到文件异常等等。怎样尽可能地捕获程序中可能出现的异常呢? 我们可以利用try后面接多

文档评论(0)

1亿VIP精品文档

相关文档