Обработка исключений в потоках

Я рекомендую использовать snakefood для создания графических графов зависимостей проектов Python. Это обнаруживает зависимости достаточно приятно для непосредственного наблюдения областей для перефакторизации. Его использование довольно просто при чтении определенной документации.

, Конечно, можно опустить шаг создания графика и получить словарь зависимости в файле вместо этого.

9
задан Uwe Keim 8 January 2012 в 10:46
поделиться

3 ответа

Исключение, созданное в потоке, обычно не может быть перехвачено в другом потоке.

Лучше перехватить его в функции Go и явно передать в основной поток.

Однако , если вы просто хотите регистрировать все необработанные сообщения из всех потоков, вы можете использовать событие AppDomain.UnhandledException или эквивалентные события в классе Application, если вы разрабатываете приложение WinForms или WPF.

16
ответ дан 4 December 2019 в 09:13
поделиться

Какие другие альтернативы подходят в качестве хорошего решения ?.

Какое решение для ? Какую проблему вы пытаетесь решить?

Если вы используете BackgroundWorker , в отличие от Thread, у него есть событие RunWorkerCompleted , и в нем вы можете проверить параметр RunWorkerCompletedEventArgs для свойства Error . Обычно это используется в приложениях WinForms или WPF, поскольку в конструкторе Visual Studio имеется хорошая поддержка BackgroundWorker.

Вы также можете определить делегата для Go () и вызвать для него BeginInvoke (). Конечно, вам также понадобится EndInvoke ().

Кроме того, обычно не рекомендуется запускать случайные потоки. ThreadPool.QueueUserWorkItem, BackgroundWorker или делегаты asynch используют ThreadPool и рекомендуются.

4
ответ дан 4 December 2019 в 09:13
поделиться

Вы можете использовать событие AppDomain.UnhandledException

1
ответ дан 4 December 2019 в 09:13
поделиться
Другие вопросы по тегам:

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