Как отловить ошибку при запуске программы?
От: Аноним  
Дата: 26.02.13 12:10
Оценка:
Запускаю программу под отладчиком, в окне Output вижу сообщение

A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

Как понять, какая строчка моего кода его вызывает?
Программа вроде работает, но хотелось бы знать...
debug
Re: Как отловить ошибку при запуске программы?
От: andrey82  
Дата: 26.02.13 12:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Запускаю программу под отладчиком, в окне Output вижу сообщение


А>A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll


Меню Debug — Exceptions — Common Language Runtime Exceptions — System — System.ArgumentOutOfRangeException

Ставим флажок в колонке Thrown и запускаем программу...
Re: Как отловить ошибку при запуске программы?
От: Sinatr Германия  
Дата: 26.02.13 12:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как понять, какая строчка моего кода его вызывает?


Можно добавить очень простую проверку в Main:

        private static bool _designer = true;
        /// <summary>
        /// Get designer mode
        /// </summary>
        public static bool IsDesigner
        {
            get { return _designer; }
        }

        /// <summary>
        /// Program entry point
        /// </summary>
        [STAThread]
        public static void Main()
        {
            // if we here we are not in designer
            _designer = false;
            // let IDE handle exceptions
            if (System.Diagnostics.Debugger.IsAttached)
                Run();
            else
                try
                {
                    Application.ThreadException += Application_ThreadException;
                    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                    AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
                    Run();
                }
                catch (Exception e)
                {
                    // catch exceptions outside of Application.Run
                    UnhandledException(e);
                }
        }

        private static void Run()
        {
            Application.EnableVisualStyles();
            // and so on ...
        }

Тоесть под IDE ничего ловиться не будет, а будет вываливаться в отладку (показывать exception, trace stack, etc). Потом, нужно убрать все конструкции вида catch {} (пустые качки). И по идее будет видно, кто кидается exception-ами.
---
ПроГLамеры объединяйтесь..
Re: Упс... Всем спасибо!!!
От: Аноним  
Дата: 26.02.13 12:47
Оценка:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.