Тестирование на разматывание стека во время выполнения оператора - PullRequest
2 голосов
/ 28 октября 2010

Есть ли способ в C # проверить, происходит ли выполнение оператора во время разматывания стека исключений или нет?

Спасибо, Марчелло.

Редактировать: Я имею в виду что-то вроде этого:

using (NewDbTransaction()) { 
  //do some DB stuff here
} <-- here Dispose() of IDisposable is called 

void DbTransactionWrapper.Dispose() { 
  if (InException()) //is this possible???
    Rollback();
  else
    Commit();
}

Ответы [ 2 ]

0 голосов
/ 28 октября 2010

Класс stacktrace может вам здесь помочь, но вам придется проделать немалую работу, самостоятельно исследуя стек. Я не думаю, что есть простой способ определить, что код вызывается из блока исключений.

0 голосов
/ 28 октября 2010

Просто поймайте и перебросьте исключение.

Редактировать: Или вы имели в виду "как мне обнаружить исключение в блоке finally" ?В этом случае вы можете просто установить флаг в блоке catch и прочитать его в блоке finally.

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