标题为。
我一直在谷歌上搜索threads ...
我非常确定e.Handle没有其他地方可以阻止异常冒泡到UnhandledException处理程序。
我测试我的代码如下:
App.xaml.cs
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException +=
CurrentDomain_UnhandledException;
Application.Current.DispatcherUnhandledException +=
Current_DispatcherUnhandledException;
}
private void Current_DispatcherUnhandledException(
object sender,
DispatcherUnhandledExceptionEventArgs e)
{
MessageBox.Show(e.Exception.StackTrace);
e.Handled = true;
}
void CurrentDomain_UnhandledException(
object sender,
UnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ExceptionObject);
}
}
绑定到DataGrid的SelectedItem的ViewModel属性:
private object _selectedItem;
public object SelectedItem
{
get
{
return this._selectedItem;
}
set
{
throw new Exception("Test");
if (this._selectedItem == value)
return;
this._selectedItem = value;
this.RaisePropertyChanged();
}
}
出于某种原因,我可以看到正在处理的异常,消息框出现了。但只有当我在DataGrid中选择时,触发SelectedItem中的setter,异常仅在Visual Studio中显示,但不由处理程序处理....原因是什么?
答案 0 :(得分:0)
有时如果你使用TPL
即任务操作和Funcs,如果我调用BeginInvoke AppDomain.CurrentDomain.UnhandledException不会捕获它们的异常。