c#異常機制
阿新 • • 發佈:2021-12-21
static void Main(string[] args) { try { try { try { throw new Exception(); } finally { Console.WriteLine(1); } } finally { Console.WriteLine(2); } } catch (System.Runtime.CompilerServices.RuntimeWrappedException e) { Console.WriteLine("catch"); } catch { Console.WriteLine("catch"); } finally { Console.WriteLine(3); } Console.ReadKey(); }
在try中丟擲異常,CLR將去catch中匹配捕捉型別相同的catch塊,如果找不到將去更上層的堆疊尋找。一旦找到匹配的catch塊,就會執行內層的所有finally塊執行完成後才會執行匹配的catch塊,最後執行匹配catch塊對應的finally塊。