我有以下代码
public static void nocatch()
{
try
{
throw new Exception();
}
finally
{
}
}
哪个给出了错误
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type CustomException
这是预期的,但是在 finally
block 中添加一个 return
语句会使错误消失
public static void nocatch()
{
try
{
throw new Exception();
}
finally
{
return; //makes the error go away!
}
}
谁能解释一下这是怎么回事?为什么错误消失了?
注意:我写这段代码纯粹是为了实验目的!
最佳答案
错误消失了,因为您的代码现在有效了。 (不好,但有效。)
如果 finally
block 只有一个直接的 return;
语句,那么整个 try/catch/finally 或 try/finally 语句不能抛出任何异常 - 所以您无需声明它可以抛出异常。
在您的原始代码中,您的 try
block 可能(好吧,它将)抛出 Exception
(或 CustomException
显然是在您的真实代码中)- 这是一个已检查的异常,这意味着您必须捕获它或声明该方法可能会抛出它。
关于java - finally 添加 return 隐藏异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861617/