اكتب استثناء التهيئة عند استخدام حقل ثابت
-
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;
}
}
}
عند تشغيل هذا ، أحصل على استثناء من النوع INTILISTION كيف يمكنني تجنب ذلك ...
المحلول
يتم إلقاء 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);
}
}
نصائح أخرى
أنت ترمي استثناءً في مُنشئ فئة Singleton الخاصة بك ، لذلك في اللحظة التي تحاول أن تقوم بإنشائها لها استثناء. يتم لف هذا في typeinitializationException كما ترى.
الحل: لا ترمي استثناء ما لم يكن محاذاة.
لا تنتمي إلى StackOverflow