gpt4 book ai didi

c# - 处理 ViewModel/Model 中的致命异常

转载 作者:可可西里 更新时间:2023-11-01 08:08:58 25 4
gpt4 key购买 nike

我有一个使用 M-V-VM 方法编写的应用程序。

数据访问在模型中完成。如果此处发生 fatal error (例如,与数据源的连接丢失),则抛出 Exception。此异常冒泡到 ViewModel。

但是,因为数据访问的原始触发器是数据绑定(bind),WPF 吞下了这个异常(它只在应用程序在调试器下运行时记录在输出窗口中)。

我宁愿这个异常保持未处理状态,这样我的应用程序范围内的未处理异常处理程序就可以拾取它、记录它并优雅地退出。我怎样才能做到这一点?

最佳答案

您可以在调度程序上对异常抛出操作进行排队。

    // This property is connected to the window using databinding
public string ExceptionThrowingBoundedField
{
get
{

try
{
// This function might throw an exception
return GetValueFromDatabase();
}
catch (Exception ex)
{
ApplicationException exWrapper = new ApplicationException(
"Wrapped Exception",
ex
);
Action throwException = () => { throw exWrapper; };
Dispatcher.CurrentDispatcher.BeginInvoke(throwException);
return "";
}
}
}

关于c# - 处理 ViewModel/Model 中的致命异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com