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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> глобальный перехват исключений 
:(
    Опции темы
W1zArD
Дата 23.11.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 3



Как перехватываются исключения которые возникают в подключаемых сборках?
допустим у меня проект состоит из WinForm приложения и библиотеки.

в WF я указываю reference на библиотеку и использую тамошние методы.
если в методе который находится в библиотеки генерируется исключение, то WF падает с ошибкой.

Вобщем пытаюсь писать исключения в лог файл, а вот возникать они могут в многих местах.

Приложение многопоточное, потоки работают с методами которые в библиотеке.

(Application.ThreadException использую)

Это сообщение отредактировал(а) W1zArD - 23.11.2009, 19:15
PM   Вверх
ceZam
Дата 23.11.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Может быть эта статья поможет:
Работа с потоками
PM MAIL   Вверх
KuMa1104
Дата 23.11.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

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



W1zArD а собственно чем try{}catch, finali не подходят?


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
W1zArD
Дата 24.11.2009, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 3



ceZam
нет, не то smile
с этим нет проблем

KuMa1104

где именно, в библиотеке или в WF?

Это сообщение отредактировал(а) W1zArD - 24.11.2009, 10:30
PM   Вверх
tol05
Дата 24.11.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



вот еще линк
работа с потоками в С#
раздел "Обработка исключений"


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
W1zArD
Дата 24.11.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 3



tol05, спасибо за ссылку, про это знаю и использую.

Проблема не в том что я не могу перехватить исключения, а в том что это нужно сделать глобально для приложения, т.е. грубо говоря "повесить хук на исключения".
PM   Вверх
KuMa1104
Дата 24.11.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

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



Цитата(W1zArD @  24.11.2009,  08:59 Найти цитируемый пост)
где именно, в библиотеке или в WF?

 там где у вас исключение. Если оно в библиотеке то там ставьте.


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
tol05
Дата 24.11.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



я наверное чего-то не понимаю ))

AppDomain.UnhandledException - обрабатывается на уровне всего домена (независимо от кол-ва потоков). Если конечно в приложении не создаются отдельные домены... Тогда каждый домен нужно подписывать на это исключение.

вот пример с двумя внешними потоками. Исключения перехватываются. Конечно это не спасает от краха приложения, но это разработчики и не обещали )
По крайней мере - единое место для логирования есть

Program.cs
Код

[STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += HandleDomain;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        private static void HandleDomain(object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show("Domain: Thread failed" + Thread.CurrentThread.ManagedThreadId);
        }


Form1.cs
Код

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Thread   t1 = new Thread(Do);
            t1.Start();

            Thread t2 = new Thread(Do);
            t2.Start();
        }

        public void Do()
        {
            int i = 0;
            int j = 0;

            while (true)
            {
                Thread.Sleep(100);
                
                if (++i > 100)
                {
                    i = i / j;
                }
            }
        }
    }



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
KuMa1104
Дата 25.11.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

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



Цитата(msi02 @  24.11.2009,  21:06 Найти цитируемый пост)
Да ребята интерестно конечно пишут, но я видел статью об этом факте по подробнее на http://forum.gold-reg.ru/Не верите заходите и посмотрите сами!Извините если что не так!


Эээ собственно у сайта совсем другая тематика.

msi02 зачем вы выложили ссылку на сайт а не на статью? 
Вы заинтриговали интересной статьей и предполагаете, что мы сей час же полезем искать эту статью?
Или……
 Вы нас на другой форум пытаетесь переманить?




--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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