Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Глобальный отлов ошибок Добавлено: 11.07.08 21:45  

Автор вопроса:  HACKER
В каждом батоне итп.. лениво писать try..catch, больше этих try..catch чем самого кода..
Как бы сделать что-то вроде глобального try..catch, чтобы не ловить ошибки везде самому. В этом глобальном хочу сделать логирование. При попадании в такой глобальный try..catch, метод откуда попали в него, должен прерываться..

Как бы такое реализовать?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #1 Добавлено: 12.07.08 05:46
Как бы сделать что-то вроде глобального try..catch, чтобы не ловить ошибки везде самому


Писать коде сразу с учетом ошибок :)


А вообще сам давно интересуюсь этим вопросом.

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 12.07.08 05:54
Не слышал о подобном.
Если нужна обработка ошибок - то собственно Try/Catch, что-то глобальное вряд ли получится сделать...

Ответить

Номер ответа: 3
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #3 Добавлено: 12.07.08 08:11
Для WinForms предусмотрено событие UnhandledException, которое срабатывает при возникновении необработанного исключения. Еще, возможно, придется поэкспериментировать с UnhandledExceptionMode. Этим можно добиться, чтоб приложение аварийно не падало а продолжало работу, но в любом случае (имхо) твой подход к обработке ошибок в корне не верен. Эти средства предназначены для аварийной обработки исключений, а ты идешь на это сознательно.

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 12.07.08 20:38
Ника, +1
Юзай SetUnhandledExceptionFilter

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 12.07.08 21:54
Спасибо, кое-что получилось...

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

Вопросы:
1) Не очень понятно для чего нужно
using System.Security.Permissions;

[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]

2) Обработчик ошибку ловит, но при этом всеравно в IDE прога прерывается, и студия её дебажит.. В релизе вылетает окошко, в котором отображается информация всякая, моя ошибка, ещё куча всего и 3 кнопки (Сведения\Продолжить\Выход).
Это всё хорошо, но мне бы чего попроще. Окошко это страшное с кучей подробностей не нужны, не нужна возможность прервать программу итп... Просто бы моё окошко с ошибокой (MessageBox.Show..) и прога дальше без дополнительных вопросов работала... (Ну или завершила процедуру в которой произошло исключение).

Ответить

Номер ответа: 6
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #6 Добавлено: 12.07.08 23:46
Попробуй такой вариант

using System;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // set unhandled exception mode
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);

            // run application
            Application.Run(new Form1());
        }

        static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            // show exception or write to log
            MessageBox.Show(e.Exception.Message,
                            "Unhandled Exception",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error); ;
        }
    }
}


В дебаг все равно вываливается, но в runtime никаких лишних диалогов не выводит.

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 13.07.08 01:01
Большое спасибо!
То что нужно!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам