gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:57 25 4
gpt4 key购买 nike

一些异常是这样抛出的:

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/

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