What happens if both catch and finally blocks thro

2020-02-08 04:09发布

What happens if both catch and finally blocks throw exception?

5条回答
地球回转人心会变
2楼-- · 2020-02-08 04:33

When catch throws an exception, finally block will be run and then exit with an exception. If the finally block throws an exception, the block will exit with an exception.

查看更多
霸刀☆藐视天下
3楼-- · 2020-02-08 04:34

When the finally block throws an exception, it will effectively hide the exception thrown from the catch block and will be the one ultimately thrown. It is therefore important to either log exceptions when caught, or make sure that the finally block does not itself throw an exception, otherwise you can get exceptions being thrown that are stifled and never seen.

查看更多
别忘想泡老子
4楼-- · 2020-02-08 04:36

The last exception thrown is thrown.

查看更多
女痞
5楼-- · 2020-02-08 04:38

HI Nwaman i think you answer is wrong i have tested it in windows appliaction, i found if u write a program like the below one

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");
}

and this will not result finally to excute,

查看更多
The star\"
6楼-- · 2020-02-08 04:47

Its already been answered well by adrianbanks, but the following post should be interesting: Interesting Exception Results: Throwing Exceptions From the Finally Block

查看更多
登录 后发表回答