Как отловить необработанное исключение в роли Windows Azure (рабочий) - PullRequest
9 голосов
/ 07 января 2011

Я пытаюсь поймать все необработанные исключения в моей рабочей роли. Я попытался поместить блок try - catch в метод Run() (как предложено здесь ), но безуспешно.

public override void Run()
{
  try
  {
    base.Run();
  }
  catch (Exception ex)
  {
    Trace.TraceError("Unhandled Exception: {0}", ex);    
    throw ex;
  }
}

Роль размещает службу WCF, поэтому внутри метода Run() нет другой логики. Есть ли еще возможность ловить исключения на этом уровне?

Обновление 1 Чтобы выяснить проблему: роль self содержит службу WCF (инициализированную в OnStart()), где некоторые операции являются фоновыми операциями. Когда служба вызывается и этот метод генерирует непредвиденное исключение, мне нравится ловить это, чтобы записать его в журнал.

Решение: Очевидно, это как в обычном приложении на C #: Просто добавьте обработчик к событию UnhandledException, как это

AppDomain.CurrentDomain.UnhandledException +=
  new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

внутри OnStart() Роли. Я был так сосредоточен на Azure, что предположил, что это не сработает, и даже не попробовал: -)

Ответы [ 2 ]

14 голосов
/ 20 апреля 2012

Как уже было уточнено в моем вопросе, здесь для полноты в качестве ответа:

Очевидно, что это похоже на обычное приложение на c #: просто добавьте обработчик к событию UnhandledException, как это

AppDomain.CurrentDomain.UnhandledException +=
   new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

внутри OnStart() роли.

0 голосов
/ 02 мая 2011

Улов будет перехватывать все исключения.

Вы снова его выбрасываете, чтобы один не был перехвачен.

Кроме того, вы ведете журнал, но в Azure по умолчанию журналы не включены, поскольку они стоят.

Другая альтернатива в том, что нет никаких исключений.

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