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;

        }
    }

}

运行此操作时,我会得到类型的Intialization异常,我如何避免这种情况...

有帮助吗?

解决方案

当类初始化器抛出异常时,抛出了TypeInitializationException(在您的示例中 static TypeInit().

您可以通过检查 InnerException 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);
    }
}

其他提示

您正在向单身班的构造函数中抛出一个例外,因此,当您试图构造它时,它会引发异常。如您所见,这被包裹在TypeInitialization Exception中。

解决方案:除非经过战绩,否则不要抛出例外。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top