为什么这不起作用,任何人都能为这一个给出确切的答案....
public class Manager
{
public static void main(String args[])
{
try{
Object obj=new A(); //it will generate ClassNotFoundException object
System.out.println("currently the reference obj is pointer to the object:"+obj);
}catch(Object o)
{
System.out.println(o);
}
}
System.out.println("End of Main");
}
答案 0 :(得分:7)
这不会起作用,因为“catch”语句中声明的变量必须是异常类型(即Throwable
或子类型)。
来自Java语言规范的section 14.20:
catch子句必须只有一个 参数(称为 例外参数);声明的 必须包含异常参数的类型 是Throwable类或子类 (不仅仅是一个子类型)的Throwable,或者 发生编译时错误 特别是,它是一个编译时错误 如果是声明的异常类型 参数是一个类型变量(§4.4)。 参数变量的范围是 捕获条款的块。
当然你可以写:
catch(Throwable t)
{
Object o = t;
System.out.println(o);
}
目前尚不清楚你为什么要这么做。
答案 1 :(得分:0)
你对A类的构造函数一无所知......它实际上是在抛出异常吗? 如果是,那么其他答案应该可以帮到你。 如果不是,那么也许我可能会记得 instanciating 异常不是抛出异常......
示例:
这不起作用:
try {
new Exception();
} catch (Exception e) {
System.out.println("This will never be printed...");
}
但是,您可以通过添加throw
关键字来获得预期结果:
try {
throw new Exception();
} catch (Exception e) {
System.out.println("This will actually be printed...");
}