169 похожих чатов

Почему люди не знают про DispatcherUnhandledException += App_DispatcherUnhandledException;

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

и везде тулят try-catch(Exception ex)?

16 ответов

24 просмотра

Скорее всего, как затычка

Евгений-Сотников Автор вопроса
єгор Kn
Скорее всего, как затычка

Ну так есть глобальный хендлер, хера вы херачите говнокод?!

Евгений-Сотников Автор вопроса

да, потому-что есть один глобальный хендлер где можно закодить логирование и не обмазываться этими трайкетчами где ненадо

Ну иногда обрабатывать некоторые ошибки нужно

Евгений-Сотников Автор вопроса
t
Ну иногда обрабатывать некоторые ошибки нужно

НЕКОТОРЫЕ, а не тупо все возможные

Евгений Сотников
да, потому-что есть один глобальный хендлер где мо...

Ти не завжди хочеш (точніше, майже ніколи не хочеш), щоб помилки переривали виконання всього коду і викидали виконання аж в глобальний хендлер Глобальний хендлер тільки для того, щоб ловити критичні необроблені помилки, які просочилися Інакше ти кладеш всю інфру заради "лога" Зазвичай у кожного фреймворка є власні глобальні хендлери (у asp.net core це middleware, у azure functions це ще якісь свої штуки, і т.д.) Плюс, ловлячи помилку десь далеко, ти втрачаєш локальний контекст (ти не можеш, наприклад, залогати стан локальних змінних на момент виникнення помилки, бо ти вже десь далеко на рівні домену)

Евгений-Сотников Автор вопроса
Vova Lantsov 🇺🇦
Ти не завжди хочеш (точніше, майже ніколи не хочеш...

Ты не хочешь прерывать исполнение если это ошибки логики а не твои неотловленные наллрефы Но у ошибок логики есть определенныйц тип который и надо хендлить, а не супекласс Exception

Евгений Сотников
Ты не хочешь прерывать исполнение если это ошибки ...

ти будеш вишукувати кожен клас помилки (яких в 1 методі може бути умовно 10), який може кинути кожна з ліб, яку ти юзаєш, щоб окремо це обробити, і так в усіх місцях коду, щоб твої try/catch локальні займали по 100 строк? успіхів) null ref там ніколи в цілому не має навіть виникнути Якщо він там виникнув у проді - питання до QA Коли код пишеться правильно - в цьому навіть нічого поганого немає, бо помилка (яка б вона не була) логується, а юзеру коректно повертається текст помилки на UI І знову ж таки останній абзац минулого повідомлення, досі валідний навіть для null ref

Евгений-Сотников Автор вопроса
Vova Lantsov 🇺🇦
ти будеш вишукувати кожен клас помилки (яких в 1 м...

Да, все обшики которые приходят извне сборки надо отдельно оьрабатыватьсогласно контракту вызваемых методов

Евгений Сотников
Да, все обшики которые приходят извне сборки надо ...

Давай інакше, мінуси якщо вони окремо не оброблюються (не беручи до уваги окремі випадки, коли це необхідно по логіці)?

Евгений-Сотников Автор вопроса

Захламляется код лишними вложенностями и вызовам логов

Евгений Сотников
Захламляется код лишними вложенностями и вызовам л...

Не згоден. У нас на проєкті в 95% випадків хендляться помилки catch (Exception), все ок

тому що якщо помилка дойде до глогбалнього хендлера, то потік вмре)

Евгений-Сотников Автор вопроса
Bogdan
тому що якщо помилка дойде до глогбалнього хендлер...

не обязательно, если ты в хендлере проставишь           private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)         {                         e.Handled = true;         } то не умрет

Евгений Сотников
не обязательно, если ты в хендлере проставишь     ...

Я не про процес, а про потік кажу. Там не залишиться чому виконуватись, якщо стек ввесь розмотався

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта