有些例外情况如下:
throw new Exception( errMsg );
... doest正在停止我的申请!
我的期望是当我扔任何前任。 - app应立即停止 但我注意到我的应用程序抛出一个前。一个接一个(特别是绑定时)而不是终止同一时间
EDIT_1:
当它可以拦截时,我没有try-catch块
EDIT_2:
如上所述 - 主要发生在绑定时。
例如,我有对象的getter检查用户的权限( GetValue 方法) - 如果没有引发异常。
我可以在调试器中看到它正在执行抛出新的异常(...)语句,但应用程序不会停止。
我也注意到异常被抛出的次数与绑定集合中的数量一样多......
任何想法如何强制停止绑定并引发真正的异常?
示例代码,用于说明我在说什么
public string Name {
get { return GetValue( name, "Name"); }
}
答案 0 :(得分:6)
未捕获的异常将导致您的应用程序终止。它的设计(至少在2.0发布后; 1.1有不同的行为,iirc)。
他们称之为“快速失败”。这个想法是,如果抛出了你没想到的异常(并因此捕获),你的应用程序就处于不稳定状态。在这一点上,崩溃比继续跛行更好。
绑定的行为方式不同,因为所有绑定操作(在WPF中)都旨在捕获所有异常,而不是删除应用程序。为什么他们做出这个决定是WPF团队必须告诉你的。
答案 1 :(得分:2)
异常只有在应用程序一直未被捕获到当前堆栈底部时才会停止。 WPF绑定对大多数抛出的异常非常有弹性;相反,它会在输出窗口中记录失败并继续。这是一个好的设计决定是一个争论的问题......
答案 2 :(得分:1)
如果我理解正确的话:如果抛出的异常作为try / catch块的一部分被捕获,或者如果你在应用程序级别设置了异常catch-all处理程序,那么你的应用程序将继续运行。