c# - 抛出的异常不会停止应用程序

标签 c# .net exception

一些异常是这样抛出的:

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/

相关文章:

c# - WaitForExit() 抛出异常 c#

c# - 在哪里处理 StaleObjectStateException

java - 输入不匹配异常?我还是想不通

c# - 这个 SQL 查询如何在 Oracle SQL Developer 中运行而不是在代码中运行?

C# 文件路径重装

C# 结构如 std::set 支持 lower_bound

c# - 取消 Socket.xxxxAsync 调用

c# - 新的 "Exception filter"功能有什么好处?

c# - 当前上下文中不存在名称 "CommandManager"(Visual Studio 2015)

c# - 我怎样才能加快这个直方图类?