سؤال

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 كما ترى.

الحل: لا ترمي استثناء ما لم يكن محاذاة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top