dotnet C# 在 finally 拋異常會發生什么
如果我在一個方法的 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 異常
博客園博客只做備份,博客發布就不再更新,發生如果想看最新博客,拋異請到 https://blog.lindexi.com/

本作品采用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。發生歡迎轉載、拋異使用、重新發布,但務必保留文章署名[林德熙](https://www.cnblogs.com/lindexi)(包含鏈接:https://www.cnblogs.com/lindexi ),不得用于商業目的,基于本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我[聯系](mailto:lindexi_gd@163.com)。
作者:lindexi
來源鏈接:https://www.cnblogs.com/lindexi/p/14897247.html
未經允許不得轉載:>貴州網站建設公司 » dotnet C# 在 finally 拋異常會發生什么