UnhandledException未被处理的可能原因是什么?

时间:2015-10-07 09:14:43

标签: wpf mvvm datagrid exception-handling

标题为。

我一直在谷歌上搜索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中显示,但不由处理程序处理....原因是什么?

1 个答案:

答案 0 :(得分:0)

有时如果你使用TPL
即任务操作和Funcs,如果我调用BeginInvoke AppDomain.CurrentDomain.UnhandledException不会捕获它们的异常。