Type d'exception Initialisation lorsque vous utilisez un champ statique
-
29-09-2019 - |
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 ...
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