![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Поясню. Юзверь пользуется моей прогой и рушит её. Т.е. эксэпшн после которого вылет проги. Пусть рушится. Надо предложить пользователю отправить отчёт об ошибке мне на мыло. То есть отчёт сформировать надо ещё. Как реализовать такую штуку?
По сути это отлов всех исключений как-бы (хотя без адекватной реакции чтобы прога не вылетела). -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Уже обсуждалось пару раз.
Внизу есть список похожих тем, он же "А здесь смотрели?". |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Эм... когда ввёл название темы, я посмотрел похожие, но такой не было. Извиняйте.
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
если тема еще не закрыта...
помоему легче всего реализовать через блоки try и cacth... приблизительно так:
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
реализуй класс который тебе будет создавать отчеты об ошибках. и каждый раз при вылове ошибки передавай в него код ошибки, класс где она была отловлена и прочую важную/нужную инфу. потом из этого же класса(который создает отчеты) запускай окошко в котором будет предлагаться отправка. если пользователь откажется то что бы отчет сохранялся бы в какой нибудь файл(может когда нибудь согласится, тогда отправиться весь файл).
ну а ловить конечно через try cath. Это сообщение отредактировал(а) Экскалупатор - 21.1.2010, 22:27 |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Если нужно отловить вообще все исключения в одном месте:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
KelTron, то есть при выкидывании любого исключения будет срабатывать обработчик Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)?
Если да, то это то, что нужно!))) -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Именно так.
А точнее будет перехвачено любое необработанное исключение. Это сообщение отредактировал(а) KelTron - 22.1.2010, 19:58 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
а как мне кажется это неправильно перехватывать все исключения, это костыли
![]() |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Heinzz, Я вставлю код, предложенный KelTron, непосредственно перед релизом. Что плохого?
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
ДобренькийПапаша, плохо будет в том что ты сам не узнаешь что и где у тебя сработает. и не сможешь сохранить состояние объекта при этом. надо ставить прежде всего в узких местах. что бы прежде всего ошибки перехватывались и обрабатывались на местах, и только потом, если там не справиться, был глобальный отлов. а вообще если все правильно сделано, то должно хватать только конкретных ловушек в узких местах.
|
|||
|
||||
gambit |
|
||||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 5 Всего: 40 |
я делал вот так
вместо messageBox, можно отправить например в статический класс. здесь будут пойманы все исключения необработанные ранее Добавлено через 5 минут и 44 секунды это естественно, но не всегда возможно определить где слабое место. например: InsufficientMemoryException; TimeoutException; StackOverflowException; OutOfMemoryException каждую строку в эти эксепшены не обернешь
когда приложение падает по ex, то выдается сообщение об отправке сообщения в microsoft, а там можно настроить что б microsoft пересылал это сообщение тебе(во всяком случае раньше там было). |
||||
|
|||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
gambit, твой пример ловит исключения только в главном потоке.
|
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
gambit, да тоже так можно.
PashaPash, правда, правильно сказал, что только для главного потока))) Можно и так, у меня однопоточное приложение получилось. Экскалупатор, про узкие места согласен, но всё-равно всё не отловишь так. Это сообщение отредактировал(а) ДобренькийПапаша - 23.1.2010, 14:18 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
я бы использовал AppDomain.UnhandledException как раз для того, чтобы
работает для любого потока -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |