静的フィールドを使用するときの初期化の例外を入力します
-
29-09-2019 - |
質問
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);
}
}
他のヒント
シングルトンクラスのコンストラクターに例外を投げかけているので、それを構築しようとしている瞬間に例外が投げかけられます。これは、あなたが見るように、タイプイニタイアル化エクセプトに包まれます。
解決策:保証されていない限り、例外を投げないでください。
所属していません StackOverflow