Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как ловить все ошибки и поглащать их 
:(
    Опции темы
Real
Дата 4.5.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 507
Регистрация: 9.11.2007

Репутация: 0
Всего: -1



Как ловить все ошибки и поглащать их?
PM   Вверх
jonie
Дата 4.5.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



см на Application.SetUnhandledException и ловить Application.ThreadException+AppDomain.UnhandledException


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
HalkaR
Дата 4.5.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 5
Всего: 42



Вот кусок кода, который обрабатывает различные глобальные ошибки
Код

        [STAThread]
        private static void Main(String[] args)
        {
            Assembly[] ass = AppDomain.CurrentDomain.GetAssemblies();
            foreach (Assembly assembly in ass)
            {
                if (assembly.FullName.Contains("Office"))
                {
                    AssemblyName[] names = assembly.GetReferencedAssemblies();
                    foreach (AssemblyName name in names)
                    {
                        try
                        {
                            Assembly.Load(name);
                        }
                        catch
                        {
                            MessageBox.Show(
                                string.Format(
                                    "Необходимый компонент \"{0}\" не найден. Попробуйте переустановить преложение.",
                                    name.Name + ".dll"),
                                "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Application.Exit();
                            return;
                        }
                    }
                }
            }
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            Application.ThreadException += Application_ThreadException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                MainForm form = new MainForm();
                if (!form.IsDisposed)
                {
                    Application.Run(form);
                }
            }
            catch (Exception ex)
            {
                ErrorForm.ShowErrorForm(ex.StackTrace + '\t' + ex.Message, null);
            }
        }

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            if (e.ExceptionObject is Exception && (e.ExceptionObject as Exception) != null)
            {
                ErrorForm.ShowErrorForm(
                    ((Exception) e.ExceptionObject).StackTrace + '\t' + ((Exception) e.ExceptionObject).Message, null);
            }
        }

        private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            if (e.Exception != null)
            {
                ErrorForm.ShowErrorForm(e.Exception.StackTrace + '\t' + e.Exception.Message, null);
            }
        }



Добавлено через 1 минуту и 17 секунд
Основные здесь три строчки
Код

            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            Application.ThreadException += Application_ThreadException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;


Добавлено через 1 минуту и 46 секунд
Вобщем это тоже что написал jonie
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.