- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * 第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中常见的就有:未分配内存异常、未找到文件异常等等。怎样尽可能地捕获程序中可能出
您可能关注的文档
最近下载
- 22S702室外排水设施设计与施工-钢筋混凝土化粪池.docx VIP
- 企业还款计划书范本.pdf
- Unit 3 Places we live in单元整体教学设计(共六课时)2025-2026学年度人教PEP英语四年级上册.docx VIP
- 智能世界2035报告.pdf
- 标准图集-R4动力专业标准图集-室内动力管道安装-03SR417-2装配式管道吊挂支架安装图.pdf VIP
- 15MR105城市道路与开放空间低影响开发雨水设施(OCR).pdf VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 2025至2030血液制品产业行业市场深度研究与战略咨询分析报告.docx
- 乙炔安全技术说明书.doc VIP
- 公司还款计划书范本.docx
文档评论(0)