【发布时间】:2012-07-20 07:37:28
【问题描述】:
class throwseg1
{
void show() throws Exception
{
throw new Exception("my.own.Exception");
}
void show2() throws Exception // Why throws is necessary here ?
{
show();
}
void show3() throws Exception // Why throws is necessary here ?
{
show2();
}
public static void main(String s[]) throws Exception // Why throws is necessary here ?
{
throwseg1 o1 = new throwseg1();
o1.show3();
}
}
为什么编译器报告 show2()、show3() 和 main() 方法有
未报告的异常 必须捕获或声明抛出的异常
当我从这些方法中删除 throws Exception 时?
【问题讨论】:
-
@PaulTomblin main 当然可以声明抛出异常。如果是这样,JVM 将关闭。这几乎是编译器允许的忽略它。
-
当被调用方法(Methdod1)抛出
Exception时,我们要定义调用方法(Method2)为throws Exception;如果我们没有在调用方法中处理该异常。这样做的目的是提醒 Method2 的调用方法(Method3),Method2 可能会抛出异常,您应该在这里处理它,否则它可能会中断你的程序。 -
类似地,如果 Method3 没有在其主体中处理异常,则它必须在其方法定义中定义
throws Exception以提示其调用方法。 上一条评论的扩展
标签: java exception-handling unhandled-exception throws checked-exceptions