



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序异常处理的特殊情况 1、不能在finally块中执行return,continue等语句,否则会把异常“吃掉”;2、在try,catch中如果有return语句,则在执行return之前先执行finally块请大家仔细看下面的例子:以下是引用片段:public class TryTest public static void main(String args) try System.out.println(TryTest.test();/ 返回结果为true其没有任何异常 catch (Exception e) System.out.println(Exception from main); e.printStackTrace(); doThings(0); public static boolean test() throws Exception try throw new Exception(Something error);/ 第1步.抛出异常 catch (Exception e) / 第2步.捕获的异常匹配(声明类或其父类),进入控制块 System.out.println(Exception from e);/ 第3步.打印 return false;/ 第5步. return前控制转移到finally块,执行完后再返回(这一步被吃掉了,不执行) finally return true; / 第4步. 控制转移,直接返回,吃掉了异常 public static void doThings(int i) try if(i=0) /在执行return之前会先执行finally return; int t=100/i; System.out.println(t); catch(Exception ex) ex.printStackTrace(); finally System.out.println(finally); Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理。不过,我认为很多人其实并没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道点概念。本文就对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为:好,不好和恶劣三种。同时向你提供了一些解决这些问题的技巧。首先解释一些java异常处理中必须搞清楚的定义和机制。Java语言规范将自Error类或RuntimeException类衍生出来的任何违例都称作“不可检查”(Unchecked)异常;其他所有异常则称作“可检查”(Checked)异常。所谓可检查异常,是指我们应该自行处理的异常。至于处理的手段,要么加以控制(try catch),要么通告(throws)他们有可能产生。通常,应捕捉那些已知如何处理的异常,而通告那些不知如何处理的异常。而对那些不可检查异常来说,他们要么在我们的控制之外(Error),要么是我们首先就不该允许的情况(RuntimeException).至于异常的指定,Java的规则非常简单:一个方法必须通告自己可能产生的所有可检查异常。编写自己的方法时,并不一定要通告出方法实际可能产生的每一个异常对象,要想理解什么时候必须要方法的throws丛句来通告异常,就必须知道对一个异常来说,他只有可能在下面四种情况下才会产生:1调用了可能产生异常的方法。比如BufferedReader类的readLine方法。该方法通告java.io.IOException异常2侦测到一个错误,并用throw语句产生异常。3出现一个编程错误。比如a-1 = 0。4Java产生内部错误。如果出现头两种情况之一,必须告诉打算使用自己方法的人:假如使用这个方法,可能造成一个异常的产生(即在方法头上使用throws),一个简单的记忆方法: 只要含有throw,就要通告throws。如果一个方法必须同时处理多个异常,就必须在头内指出所有异常。就像下例展示的那样,用逗号对他们进行分割:class Animation public Image loadImage(Strint s) throws EOFException,MalformedURLException 然而,我们不需要通告内部java错误,也不应该通告自RuntimeException衍生出来的异常。好的异常处理好异常处理提供了处理程序错误的统一机制。事实上,Java语言通过向调用者提出异常警告的方式而显著地提升了软件开发中的异常处理能力。这种方式把Java语言中的“方法(method)”进行了扩展和增强,使之包括了自身的错误条件。下面就让我们看一个例子,这个例子说明了这种情况。以下是FileInputStream构造器之一的原型:public FileInputStream(String name) throws FileNotFoundException Java的方法和构造器必须声明他们在被调用时可能“扔出”的异常,采用的关键字就是“throws”。这种在方法原型中出现的异常提示增加了编程的可靠性。显而易见,这种方式是向方法的调用者提示了可能出现的异常条件,这样调用者就可以对这些异常作出适当的相应处理。以下代码示意我们是如何捕获并且处理FileNotFoundException 这一异常的:try FileInputStream fis = new FileInputStream(args0); / other code here . catch (FileNotFoundException fnfe) System.out.println(File: + args0 + not found. Aborting.); System.exit(1); Java异常处理还有其他一些优秀的特性,这就是可检查异常、用户定义异常和在JDK 1.4中推出的新型Java记录API(Java Logging API)。java.lang.Exception的所有子类都属于可检查异常。可检查异常(checked exception)是扔出该异常的方法所必须提示的异常,这种异常必须被捕获或者向调用者提示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省芜湖市繁昌区2024-2025学年高二上学期期中考试英语试题及答案
- 心理分析问答题目及答案
- 小学学科数学题目及答案
- 忘不了作文500字(9篇)
- 合作经营养殖项目合同
- 项目管理计划及预算制定指导性文档模板
- 农民特色农产品购销合同书
- 旬阳县消防知识培训课件
- 纪检基础知识培训课件
- 五角飞碟200字(8篇)
- 中西结合治疗皮肤病
- 人教版小学一年级上体育全册教案
- 街道综合执法培训课件
- 山东省潍坊市2024-2025学年高一上学期期中考试数学试题
- 《山东省建筑工程消耗量定额》解释全集
- 宠物脂肪肝的诊断与治疗
- 木工分包协议书电子版
- 历年制油工题库汇编
- 小学科学教科版三年级下册全册思维导图(共24课)
- (三级)智能云服务交付工程师理论考试题库大全-中(多选题)
- 浙江省中小学心理健康教育课程标准
评论
0/150
提交评论