【发布时间】:2009-07-10 04:08:44
【问题描述】:
考虑下面的代码
private int meth()
{
try
{
return 1;
}
catch(Exception ex)
{
return 2;
}
finally
{
return 3;
}
}
编译上述代码时,“异常”被视为未经检查的异常。那就是“尝试块中永远不会抛出无法到达的catch块异常”编译错误不会发生。考虑我声明自己的异常,
class MyException extends Exception
{
}
并在代码中使用它
private int meth()
{
try
{
return 1;
}
catch(MyException me)
{
return 2;
}
finally
{
return 3;
}
}
在这个“unreachable catch block MyException is never throw in try block”中发生编译错误。为什么在第一种情况下“异常”被视为 RuntimeException 而在第二种情况下,即使“MyException”是“异常”的子类,它也被视为已检查异常。有人可以帮我解决这个问题吗?
【问题讨论】: