Question

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TypeIntailization_Exception
{

    class TypeInit
    {
        // Static constructor
        static TypeInit()
        {

        }
        static readonly TypeInit instance = new TypeInit();
        public  static TypeInit Instance
        {
            get { return instance; }
        }
        TypeInit() { }
    }
    class TestTypeInit
    {
        static public void Main()
        {

            TypeInit t = TypeInit.Instance;

        }
    }

}

lors de l'exécution de cette i obtenir le type d'exception INITIALISATION comment puis-je éviter cela ...

Était-ce utile?

La solution

La TypeInitializationException est levée lorsqu'une exception est levée par l'initialiseur de classe (dans votre exemple static TypeInit().

Vous pouvez voir la véritable exception en examinant la propriété InnerException du TypeInitializationException:

static public void Main()
{
    try
    {
        TypeInit t = TypeInit.Instance;
    }
    catch (TypeInitializationException tiex)
    {
        var ex = tiex.InnerException;

        Console.WriteLine("Exception from type init: '{0}'", ex.Message);
    }
}

Autres conseils

Vous lancer une exception dans le constructeur de votre classe singleton, de sorte que le moment où vous essayez de le construire, il lance une exception. Cela est enveloppé dans le TypeInitializationException comme vous le voyez.

Solution:. Ne jette pas une exception à moins qu'il soit warrented

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top