background image

Java 教程:Java 编程异常处理优劣区分说明

  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 衍生出来
的异常。
  好的异常处理