ج تطبيق # وحدة التحكم - منع الحوار الاستثناء الافتراضي

StackOverflow https://stackoverflow.com/questions/1048045

سؤال

ولدي طلب بسيط مع AppDomain واحد الذي أطلق بصفة دورية على الخادم. أحيانا يحدث استثناء غير معالج في aplication والافتراضية إحباط / إعادة المحاولة / تجاهل الملوثات العضوية الثابتة الحوار حتى. ولست بحاجة لمنع بطريقة أو بأخرى edialog من عرض وإخراج عادل استثناء على StrErr وإغلاق التطبيق. لذلك أنا المغلقة كافة التعليمات البرمجية في الأسلوب الرئيسي مع عبارة catch حاول، لكنه لم يساعد على الإطلاق - لا يزال يظهر مربع الحوار استثناء أحيانا

والرمز الرئيسي () يبدو مثل هذا:

try
{
    RunApplication();
}
catch (Exception exc)
{   
    Console.Error.WriteLine(exc.ToString());
    Console.Error.WriteLine(exc.StackTrace);
    if (exc.InnerException != null)
    {
       Console.Error.WriteLine(exc.InnerException.ToString());
       Console.Error.WriteLine(exc.InnerException.StackTrace);
    }
    Environment.Exit(666);
}

وهذا الشرط محاولة اللحاق فهذه قبض جميع الاستثناءات غير المعالجة وينبغي أن الحوار استثناء أبدا المنبثقة AFAIK. هل فاتني شيء؟ أو أن هناك أي مكان (التسجيل الخ) على الخادم التي تسيطر على بعض السلوك الخاصة المتعلقة رمز الخطأ الحوار استثناء / التطبيق؟

هل كانت مفيدة؟

المحلول

وهناك حدث استثناء غير معالج يمكنك الاشتراك في في مجال التطبيق.

    public static void Main()   
    {   
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);

        //some code here....
    }   

    /// <summary>
    /// Occurs when you have an unhandled exception
    /// </summary>
    public static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)   
    { 
        //here's how you get the exception  
        Exception exception = (Exception)e.ExceptionObject;  

        //bail out in a tidy way and perform your logging
    }

نصائح أخرى

هل تعتبر احتمال أن يكون قد شرط اللحاق بك استثناءات رمي؟ هل تفرخ المواضيع في التطبيق الرئيسي الخاص بك؟

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