如果 catch 和 finally 块都抛出异常会发生什么?
问问题
12323 次
5 回答
32
当finally
块抛出异常时,它将有效地隐藏从块中抛出的异常,catch
并将成为最终抛出的异常。因此,重要的是在捕获时记录异常,或者确保 finally 块本身不会抛出异常,否则您可能会抛出被扼杀且从未见过的异常。
于 2009-09-26T23:32:50.167 回答
6
当 catch 抛出异常时, finally 块将被运行,然后异常退出。如果 finally 块抛出异常,则该块将退出并出现异常。
于 2009-09-26T23:26:29.430 回答
4
最后抛出的异常被抛出。
于 2009-09-26T23:25:45.050 回答
4
它已经被 adrianbanks 很好地回答了,但是下面的帖子应该很有趣: 有趣的异常结果:从 finally 块中抛出异常
于 2009-09-26T23:34:29.400 回答
-4
嗨 Nwaman 我认为你的回答是错误的
try
{
string s = "hu";
int i = int.Parse(s);
}
catch (Exception ex)
{
string s = "hu";
int i = int.Parse(s);
throw new Exception();
}
finally
{
MessageBox.Show("hi");
}
这不会导致最终执行,
于 2012-10-22T09:36:50.583 回答