Java 博客中的这句话是什么意思,它说函数必须声明Throwable at方法签名才能捕获它?
我试图理解Java中的异常处理,我在几篇文章中不断遇到下面提到的令人困惑的语句的变体- 捕获java.lang.Throwable实例是个坏主意,有几个原因,因为为了捕获它们,您必须在方法签名处声明,例如public void doSomething()抛出Throwable 这是从 然而,该代码编译-Java 博客中的这句话是什么意思,它说函数必须声明Throwable at方法签名才能捕获它?,java,exception,throwable,Java,Exception,Throwable,我试图理解Java中的异常处理,我在几篇文章中不断遇到下面提到的令人困惑的语句的变体- 捕获java.lang.Throwable实例是个坏主意,有几个原因,因为为了捕获它们,您必须在方法签名处声明,例如public void doSomething()抛出Throwable 这是从 然而,该代码编译- class CatchThrowable { void function() { try { throw new Th
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关键字用于声明函数抛出的已检查异常,而不是它捕获的异常。请澄清引用的声明 声明:
为了捕获它们,您必须在方法签名处声明,例如public void doSomething()抛出的Throwable
这基本上是错误的
你只需要理解以下几点。存在异常层次结构
一个方法可以抛出所有类型的异常,这取决于您的需要,您捕获了哪些异常,而哪些异常没有捕获
捕获错误
(其中包括您也不应该捕获可丢弃的
)也不是一个好主意,因为存在一些严重的JMV-虚拟机器错误
,如OutOfMemoryError
,您通常不应该捕获这些错误
但这与方法在其
部分声明的事实无关 如果您在方法中捕获它,那么该方法不会将其抛出外部。Capiche?是的,我认为教程的意思是抛出异常的方法应该在它的签名中有抛出异常
。我认为博客没有说得很清楚。相关的: