Я оцениваю Postharp для развертывания в приложении. Я хотел бы обрабатывать все неперехваченные исключения в моем приложении с postsharp Таким образом, я реализовал метод OnException в дочернем классе OnExceptionAspect. С моими испытаниями все исключения пойманы, за исключением одного исключения в одном случае: , когда исключение выбрасывается в backgroundWorker.Обработка исключения в C# backgroundWorker
мой класс:
public class Test {
public void MethodTest() {
//...
// if I throw an exception here, no problem : postsharp aspect intercept
// below, postsharp don't intercept the exception :
BackgroundWorker bgw = new BackgroundWorker() ;
bgw.DoWork += (object sender2, DoWorkEventArgs e2) => {
//...
throw new NotImplementedException();
}
bgw.RunWorkerAsync();
}
}
Может у вас есть предложение для перехвата этого исключения?
Благодарим за помощь.
Привет, добро пожаловать в Stack. Не страшный первый вопрос, но я немного изменил ваш заголовок и изменил ваши флаги. Вы просто пытаетесь обработать исключение, созданное фоновым рабочим, это, по сути, дубликат вопроса [this] (http://stackoverflow.com/questions/20582253/background-worker-exception-handling). –
Обработка исключений Catch-em-all - это * ужасная практика, особенно если вы еще недостаточно понимаете исключения. Вместо этого запишите обработчик событий для события AppDomain.CurrentDomain.UnhandledException. –
В моем контексте (addin Microsoft Word) невозможно перехватить событие AppDomain.CurrentDomain.UnhandledException. поэтому, чтобы обеспечить безопасность пользователя, необходимо перехватить необработанное исключение для отправки в Репозиторий исключения приложений. Хорошим способом является использование Postsharp для централизации отправки исключающего исключения из Решения для исключения приложений. Но похоже, что Postsharp не перехватывает исключение BackGroundWorker. – Christ121212