【问题标题】:C# exceptions in debug mode vs real调试模式下的 C# 异常与真实
【发布时间】:2011-01-05 14:39:01
【问题描述】:

我一直认为在 Visual Studio 和 C# 中,未处理的异常总是会导致程序终止。现在我知道我可以继续了。此外,当应用程序在调试模式下运行时,我可以“跳过”未处理的异常,而一旦程序部署(或者当你制作可执行文件时如何调用它?)它会崩溃?

【问题讨论】:

  • 面对您无法处理的异常情况(即未处理的异常),您为什么要继续?
  • 这不适用于 Winforms 或 WPF 应用程序。或者当您在 Debug + Exceptions 对话框中勾选了 Throw 复选框时。更好地记录您的问题。
  • 对不起,我不想不处理异常。我只想知道我的假设是否正确。
  • @Hans Passant 另外,但是我可以在控制台应用程序中继续,我将无法在 WinForms 或 WPF 中执行此操作?这是非常有价值的信息,谢谢

标签: c# visual-studio exception


【解决方案1】:

我认为这些文章对您阅读很有用:

Exception Handling (MSDN)
Handling and Throwing Exceptions (MSDN)

最好先掌握基础知识,然后再决定最适合你的。

【讨论】:

  • 谢谢。我确实了解如何处理异常。我只是好奇为什么一旦发生异常我可以(至少)在控制台应用程序中继续。我以为它会终止。
【解决方案2】:
catch(Exception ex)
{
  #if DEBUG
   Console.WriteLn("oops")
  #else
   throw
  #endif
}

【讨论】:

  • 如果你想保留原始堆栈帧,那应该是“throw”,而不是“throw ex”。
【解决方案3】:

异常意味着发生了意想不到的事情。如果应用程序不知道如何响应,它就会崩溃。

我们使用try catch finally 之类的构造的原因是为了让应用程序意识到不可预见的问题以及如何在这种情况下做出反应。

如果您正确实施异常处理,您的应用程序将始终顺利运行。它可能会终止,但即使这样也不会突然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多