C # эквивалент "EXCEPTION_CONTINUE_EXECUTION" с фильтром исключений - PullRequest
1 голос
/ 27 августа 2009

Возможно ли использование C # для некоторой обработки исключений с помощью функции фильтра и продолжения выполнения в точке, где возникло исключение, как в C ++?

Спасибо,

Ответы [ 3 ]

3 голосов
/ 27 августа 2009

CLR поддерживает фильтры исключений двухпроходной диспетчеризации исключений через предложение filter / endfilter IL, но низкоуровневые инструкции, которые непосредственно реализуют это, не поддерживаются компилятором C #.

Кроме того, поддерживаются только два возвращаемых значения из условия: 0 и 1, которые относятся к exception_continue_search и exception_execute_handler соответственно. Таким образом, возобновление выполнения в точке исключения не вариант.

2 голосов
/ 27 августа 2009

Это невозможно.

.NET имеет механизм фильтрации исключений, но он не доступен через язык C #. Кроме того, я не верю, что это позволяет возобновить выполнение в том месте, где произошло исключение. Это больше для того, чтобы решить, следует ли перехватывать исключение, основываясь не только на типе исключения.

2 голосов
/ 27 августа 2009

Это звучит как VB On On Goto X / Resume Next pattern. Если так, то нет.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...