我正在尝试理解 Java 中的异常处理,并且在几篇文章中不断遇到下面提到的令人困惑的陈述的变体 -
捕获 java.lang.Throwable 的实例是个坏主意有几个原因,因为为了捕获它们,您必须在方法签名处声明,例如 public void doSomething() throws Throwable。
这是来自http://javarevisited.blogspot.com/2014/02/why- catch-throwable-or-error- is-bad.html#ixzz4hQPkFktf
但是,此代码编译 -
class CatchThrowable
{
void function()
{
try
{
throw new Throwable();
}
catch (Throwable t)
{
}
}
public static void main(String[] args)
{
try
{
}
catch (Throwable t)
{
}
}
}
main 和 function 都能够在不声明抛出它的情况下捕获 Throwable。我的理解是throws关键字用于声明函数抛出的检查异常,而不是它捕获的异常。请澄清引用的声明。