質問

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例外を取得します。どうすればこれを回避できますか...

役に立ちましたか?

解決

タイプイニタイアライズエクセプトは、クラスの初期化者によって例外がスローされたときにスローされます(例では static TypeInit().

を調べることで、実際の例外を見ることができます 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);
    }
}

他のヒント

シングルトンクラスのコンストラクターに例外を投げかけているので、それを構築しようとしている瞬間に例外が投げかけられます。これは、あなたが見るように、タイプイニタイアル化エクセプトに包まれます。

解決策:保証されていない限り、例外を投げないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top