如果我在一個方法的 finally 裏面拋出異常,而在 try 裏面也拋出,那在上層拿到的是什麼
如下面代碼
private void F1()
{
try
{
A();
}
catch (Exception e)
{
}
}
private void A()
{
try
{
throw new ArgumentException("lindexi is doubi");
}
finally
{
throw new FileNotFoundException("lsj is doubi");
}
}
請問在 F1 的 catch 裏面收到的 e 是什麼類型,會觸發幾次?
試試上面的代碼,可以看到其實在進入 try 時,拋出 ArgumentException 不會立刻返回到 F1 方法裏面,而是會繼續執行 finally 方法
在 finally 拋出的 FileNotFoundException 將會替換掉 ArgumentException 拋給了 F1 方法裏面
所以答案就是在 F1 的 catch 方法,只會被觸發一次,這一次的 e 就是在 finally 拋出的 FileNotFoundException 異常