gpt4 book ai didi

仅在调试时捕获 C# 异常?

转载 作者:太空狗 更新时间:2023-10-29 23:10:51 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Exception handling problem in release mode

我怀疑对此有一个非常简单的解释,但我似乎找不到。

当我的 WinForms C# 4.0 应用程序在 Program.cs 文件中加载自身时,整个 Main() 函数内部都有一个 try/catch 语句。

我写了一个小的异常包装器,它的行为与 vanilla .net 的“未捕获异常”框非常相似,除了它提供了更多信息,允许保存(序列化)异常树,并且它允许用户将错误报告直接提交给我。

现在,它在调试 (F5) 时工作​​正常。如果我在主线程中的程序中 任何地方 触发异常,如果没有 try/catch,则异常会一直触发并返回 Main() 并显示自定义窗口。

(我已说明并妥善处理的所有其他异常)。

当我仅通过运行 .exe 文件来运行程序时,会出现 vanilla .net 异常框,而不是我编写的那个。

你能想到为什么会发生这种情况吗?最奇怪的是,它在 Debug模式下运行与单独运行时的行为截然不同。我正在构建调试 - 而不是发布。

编辑(22-March-11):

我只是在这里添加一点附录,以防你们中的一些人找不到隐藏在下面已接受答案的评论中的答案:忘记我说过我正在构建调试而不是发布。那是无关紧要的-我只是添加它以获取额外信息。重要的是,当我在 VS 中调试ging 时,异常会按预期捕获,但在 VS 外部执行我的 EXE 时,它们不会。

正如 Cody 所说,Application.Run() 有自己的异常处理程序,这就是为什么它们永远不会到达我的主要 catch,但是我提到我不是甚至在我的代码中的任何地方使用 Application.Run()... 而不是我的 GUI 首先使用 Form.ShowDialog() 启动。

我做了一些实验,可以确认 Form.ShowDialog() 的行为与 Application.Run() 相同,因为异常是在方法中处理的本身。

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