一些异常是这样抛出的:
throw new Exception( errMsg );
...确实停止了我的应用程序!
我的期望是当我抛出任何前任时。 - 应用程序应立即停止。
但我注意到我的应用程序抛出了一个前任。一个接一个(尤其是绑定(bind)时)而不是同时终止
EDIT_1:
当它可以被拦截时,我没有 try-catch block
EDIT_2:
如前所述 - 这主要发生在绑定(bind)时。
例如,我有对象的 getter 检查用户的权限(GetValue 方法)- 如果没有引发异常。
我可以在调试器中看到它正在执行 throw new Exception(...) 语句,但应用程序不会停止。
我还注意到异常被抛出的次数与绑定(bind)集合中的项目一样多...
知道如何强制停止绑定(bind)并引发真正的异常吗?
示例代码来说明我在说什么
public string Name {
get { return GetValue( name, "Name"); }
}
最佳答案
未捕获的异常将导致您的应用程序终止。这是设计使然(至少在 2.0 发布之后;1.1 有不同的行为,iirc)。
他们称之为“快速失败”。这个想法是,如果抛出一个您没有预料到的异常(因此被捕获),您的应用程序将处于不稳定状态。在这一点上,与其继续一瘸一拐地走,不如撞车。
绑定(bind)的行为不同,因为所有绑定(bind)操作(在 WPF 中)都旨在捕获所有异常,而不是关闭您的应用程序。 WPF 团队必须告诉您他们做出该决定的原因。
关于c# - 抛出的异常不会停止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405879/