Я ищу метод приложения для перехвата исключений, генерируемых геттерами с привязкой к базе данных (и сеттерами, но это выполнимо без особых трудностей).
Ни одно из этих событий не будет ловить исключения, генерируемые геттерами:
AppDomain.CurrentDomain.UnhandledException
Application.Current.DispatcherUnhandledException
Application.Current.Dispatcher.UnhandledException
Другая идея заключается в использовании пользовательского класса привязки с UpdateSourceExceptionFilter, как описано в этой теме .К сожалению, этот метод только перехватывает исключения в установщиках свойств, а не в получателях.
Последний вариант, который я видел, - это использование прослушивателя трассировки PresentationTraceSources:
PresentationTraceSources.Refresh();
PresentationTraceSources.DataBindingSource.Listeners.Add(new PresentationLoggingTraceListener());
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error;
Этот метод, по-видимому, делает в основном то, чтоЯ хочу.К сожалению, он дает мне только строку, а не исключение, а это означает, что мне пришлось бы немного разобраться с фактической ошибкой.
Метод TraceListener, вероятно, сработает в конце, но, похоже,немного хакерскийЕсть ли какие-то другие варианты, которые мне не хватает, или я в значительной степени застрял с TraceListener?