构造函数不能抛出异常?
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 那肯定会抛出异常