靜態建構函式中的異常
如果靜態建構函式丟擲異常,則永遠不會重試它。該型別在 AppDomain 的生命週期內不可用。該型別的任何進一步使用將引發圍繞原始異常的 TypeInitializationException
。
public class Animal
{
static Animal()
{
Console.WriteLine("Static ctor");
throw new Exception();
}
public static void Yawn() {}
}
try
{
Animal.Yawn();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
try
{
Animal.Yawn();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
這將輸出:
靜態 ctor
System.TypeInitializationException:‘Animal’的型別初始值設定項引發了異常。 —> System.Exception:丟擲了型別’System.Exception’的異常。
[…]
System.TypeInitializationException:‘Animal’的型別初始值設定項引發了異常。 —> System.Exception:丟擲了型別’System.Exception’的異常。
你可以看到實際的建構函式只執行一次,然後重用異常。