缺点:丢失的违例
当前位置:以往代写 > JAVA 教程 >缺点:丢失的违例
2019-06-14

缺点:丢失的违例

缺点:丢失的违例

一般环境下,Java的违例实施方案都显得十分精彩。不幸的是,它依然存在一个缺点。尽量违例指出措施里存在一个危机,并且毫不该忽略,但一个违例仍有大概简朴地“丢失”。在回收finally从句的一种非凡设置下,便有大概产生这种环境:
 

//: LostMessage.java
// How an exception can be lost

class VeryImportantException extends Exception {
  public String toString() {
    return "A very important exception!";
  }
}

class HoHumException extends Exception {
  public String toString() {
    return "A trivial exception";
  }
}

public class LostMessage {
  void f() throws VeryImportantException {
    throw new VeryImportantException();
  }
  void dispose() throws HoHumException {
    throw new HoHumException();
  }
  public static void main(String[] args) 
      throws Exception {
    LostMessage lm = new LostMessage();
    try {
      lm.f();
    } finally {
      lm.dispose();
    }
  }
} ///:~

输出如下:
 

A trivial exception
        at LostMessage.dispose(LostMessage.java:21)
        at LostMessage.main(LostMessage.java:29)

可以看到,这里不存在VeryImportantException(很是重要的违例)的迹象,它只是简朴地被finally从句中的HoHumException取代了。
这是一项相当严重的缺陷,因为它意味着一个违例大概完全丢失。并且就象前例演示的那样,这种丢失显得很是“自然”,很难被人查出蛛丝马迹。而与此相反,C++里假如第二个违例在第一个违例获得节制前发生,就会被看成一个严重的编程错误处理惩罚。或者Java今后的版本会更正这个问题(上述功效是用Java 1.1生成的)。

    关键字:

在线提交作业