【发布时间】:2015-07-14 22:36:20
【问题描述】:
在对Exception Handling中的throws声明进行了越来越多的研究之后,我感到困惑。我发现-
如果一个方法能够引起它不会的异常 句柄,它必须指定此行为,以便方法的调用者 可以保护自己免受该异常的影响。
class Boxing1{
public static void main(String args[]) throws IOException{
new B().meth2();
System.out.println("33333333");
}
}
class A{
void meth1() throws IOException{
throw new IOException();
//throw new NullPointerException();
//System.out.println("111111111111");
}
}
class B{
void meth2() throws IOException{
new A().meth1();
System.out.println("2222222");
}
}
除了使用 throws 之外,仍然存在异常-我的控制台显示以下错误-
Exception in thread "main" java.io.IOException
at A.meth1(Boxing1.java:17)
at B.meth2(Boxing1.java:24)
at Boxing1.main(Boxing1.java:10)
直到我没有在 try-catch 块中调用 meth1 之前,尽管使用了 throws,但还是会出现异常。 throws在这里的作用是什么?
try{new A().meth1();}catch(Exception e){System.out.println(e);}
我需要你的确认。我很困惑。我的一行查询是-
除了传播CheckedException,还有throws 的其他角色吗?
【问题讨论】:
-
您也可以添加
throws SomeRuntimeException。它对编译器来说是多余的,但作为文档很有用。 -
为什么你认为它可能会做其他事情?你读过这方面的东西吗?或以不同的方式问...您为什么感到困惑?你有没有发现关于
throws的描述有矛盾? -
你上面的陈述几乎是正确的——“它是为了告诉调用类有可能在这里发生这个异常,我现在不处理它。你会小心的。”
-
@dubey-theHarcortians 对此有何困惑?这和你在问题中写的一样,所以我仍然不知道你的问题是什么。
-
“不使用 throws 仍然存在异常”
main方法应该将其异常传播到哪个方法?它的“上方”没有任何东西可以处理该异常,因此它仍然未处理。
标签: java exception-handling propagation throws checked-exceptions