日期:2014-05-20  浏览次数:20917 次

构造函数不能抛出异常?
public class Test {
  public Test() {
  double x = 1.0/0.0;
  }
  public static void main(String args[]) {
  try {
  Test test = new Test();
  }catch (Exception e){
  System.out.println(e.toString());
  }
  }
}

编译,执行,会发现这个异常不会被捕捉,没有任何输出;即使尝试在构造函数中捕捉异常也不行。下列代码:

public class Test {
  public Test() {
  try {
  System.out.println("trying to throw an exception");
  double x = 1.0/0.0;
  } catch(Exception e) {
  System.out.println("Exception captured");
  }finally {
  System.out.println("inside finally");
  }
  }
  public static void main(String args[]) {
  Test test = new Test();
  }
}
编译,运行,结果为:
trying to throw an exception
inside finally
=============================================================================================

上面是别人写的教程。。
讲的是构造函数私有的好处。。

作为一个java小菜鸟。。表示不清楚为什么代码不抛出异常
假如抛出,有什么不好么?
多谢。。

------解决方案--------------------
1.0/0.0 不会出现异常
1/0 会出现异常
------解决方案--------------------
这不是构造函数不能抛出异常, 而是这段代码本身就没异常

在java的浮点型运算中:
正浮点/0,结果为Infinity, 表示无穷大
负浮点/0,结果为-Infinity,表示无穷小

如果是整型/0 那肯定会抛出异常