阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1708|回复: 1

[转帖] Java编程中异常处理的优劣之道

[复制链接]
  • TA的每日心情
    郁闷
    2012-3-7 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2012-1-7 09:47:12 | 显示全部楼层 |阅读模式
    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。   4.Java发生外部错误。   如果呈现头两种情况之一,必须通知打算运用自己方法的人:假如运用这个方法,能够形成一个异常的发生(即在方法头上运用throws),斯波帝卡一个复杂的记忆方法:    只需含有throw,就要通告throws。如果一个方法必须同时处理多个异常,就必须在头内指出一切异常。就像下例展示的那样,用逗号对他们进行联系: 1234567 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(args[0]); // other code here ... } catch (FileNotFoundException fnfe) { System.out.println("File: " + args[0] + " not found. Aborting."); System.exit(1); }   Java异常处理还有其他一些优秀的特性,这就是可反省异常、用户定义异常和在JDK 1.4中推出的新型Java记录API(Java Logging API)。java.lang.Exception的一切子类都属于可反省异常。可反省异常(checked exception)是扔出该异常的方法所必须提示的异常,这种异常必须被捕获或许向调用者提示。用户定义异常(User-defined exceptions)是定制的异常类,这种异常类扩展了java.lang.Exception类。优秀的Java程序规则定制异常封装、报告和处理他们自己独有的情况。最新的Java记录API(logging API)则可以集中记录异常。
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2017-2-28 11:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2017-2-28 12:03:13 | 显示全部楼层
    有能用的吗,就没一个能用的吗,,,,,,,,,,,
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表