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;
}
}
}
运行时我得到Type IniTialization Exception如何避免这种情况...
答案 0 :(得分:3)
类初始化程序抛出异常时抛出TypeInitializationException(在您的示例中为static TypeInit()
。
您可以通过检查TypeInitializationException的InnerException
属性来查看真正的异常:
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);
}
}
答案 1 :(得分:0)
您在单例类的构造函数中抛出异常,因此在您尝试构造它时,它会抛出异常。如你所见,这会被包装在TypeInitializationException中。
解决方案:除非被警告,否则不要抛出异常。