【问题标题】:Why does Visual Studio break on Exceptions thrown and handled in a third party library?为什么 Visual Studio 在第三方库中抛出和处理的异常时会中断?
【发布时间】:2015-01-14 08:01:18
【问题描述】:

今天我正在开发一个用 C# 编写的 Excel 加载项,而 Visual Studio 不断出现 CryptographicException(请参见屏幕截图)。这不是我正在开发的代码处理的异常,它是由我正在使用的第三方库处理的。但VS仍然打破它。如果我点击“继续”,应用程序将愉快地继续运行,即使在应用程序的任何地方都没有明确捕获异常。我没有第三方库的来源。

我启用了“仅我的代码”并在“异常”对话框中从“CryptographicException”中删除了检查,但它不断中断异常。我阅读了我能找到的相关问题。 This question 非常接近我的要求,但 OP 仍然希望看到第三方库引发的异常,而我只想看到“我的代码”中未处理的异常。

那么,Visual Studio 中是否有允许我这样做的设置?

【问题讨论】:

  • 正如视觉工作室所说,异常未处理。它没有按照您的要求处理。
  • @Amit OP 正在谈论从他自己的代码中显示在他的输出控制台中的异常。怎么是重复的?
  • @Sriram Sakthivel 我认为它已被处理,否则我的应用程序会崩溃。我还尝试在语句周围放置一个 try...catch ,但我什至无法捕捉到 Crypto 异常。所以我认为它肯定会得到处理。
  • 不要假设。如果视觉工作室说它是未处理的,那肯定是未处理的。否则它会说 Exception occurred not unhandled.

标签: c# visual-studio-2013 excel-addins


【解决方案1】:

原来我所要做的就是禁用此设置:

对于那些感兴趣的人,它位于工具 -> 选项 -> 调试 -> 常规 -> 页面顶部。

【讨论】:

    【解决方案2】:

    当第 3 方库中抛出异常时,仅我的代码不会阻止 Visual Studio 中断。见Just my code

    如果在非用户代码中发生未处理的异常,调试器会在用户代码中生成异常的行处中断。 如果为异常启用了首次机会异常,则用户代码行以绿色突出显示。

    现在的问题是,它真的没有处理(标记为黄色)还是标记为绿色的线 -> 处理了。

    【讨论】:

    • 绿色表示异常已处理。不是无理取闹。启用“仅我的代码”后,您的异常配置对话框应显示一个复选框,以不再中断已处理的异常。见:stackoverflow.com/questions/11183099/…
    • 正如我在问题中所说,我没有选中,请看这个截图:i.stack.imgur.com/8dR90.png。但它仍然会因异常而中断。
    猜你喜欢
    • 2012-10-16
    • 2011-05-31
    • 2018-04-07
    • 2023-03-06
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2012-01-02
    • 2010-09-12
    相关资源
    最近更新 更多