C# Language Eccezioni nei costruttori statici


Esempio

Se un costruttore statico genera un'eccezione, non viene mai ripetuto. Il tipo è inutilizzabile per la durata di AppDomain. Qualsiasi ulteriore utilizzo del tipo genererà una TypeInitializationException racchiusa TypeInitializationException originale.

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

Questo produrrà:

Agente statico

System.TypeInitializationException: l'inizializzatore del tipo per 'Animal' ha generato un'eccezione. ---> System.Exception: è stata generata un'eccezione di tipo "System.Exception".

[...]

System.TypeInitializationException: l'inizializzatore del tipo per 'Animal' ha generato un'eccezione. ---> System.Exception: è stata generata un'eccezione di tipo "System.Exception".

dove puoi vedere che il costruttore vero e proprio viene eseguito una sola volta e l'eccezione viene riutilizzata.