【问题标题】:Visual Studio 2012 RC breaks on exceptions from within the .NET Framework. How do I make it break on exceptions only in my code?Visual Studio 2012 RC 中断 .NET Framework 内的异常。如何使其仅在我的代码中中断异常?
【发布时间】:2012-07-29 07:54:05
【问题描述】:

在打开异常中断时使用 Visual Studio 2012 RC 进行调试时,Visual Studio 会中断 .NET Framework 内的异常。如何让它仅在我的代码中出现异常?

在调试 ASP.NET MVC 4 项目时,每次点击页面都会引发大量框架异常。经常出现以下异常:

System.Globalization.CultureNotFoundException occurred
  HResult=-2147024809
  Message=Culture is not supported.
Parameter name: name
UserCache is an invalid culture identifier.
  Source=mscorlib
  ParamName=name
  InvalidCultureName=UserCache
  StackTrace:
       at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride)
  InnerException: 

此异常来自 mscorlib.dll,我不希望 Visual Studio 中断。

看起来我在例外窗口中缺少一列。我只看到“抛出”列并且缺少“用户未处理”。这可能是我的问题。

【问题讨论】:

    标签: .net debugging exception visual-studio-2012


    【解决方案1】:

    我相信你需要做的就是去

    Debug -> Options -> Debugging and check Enable Just My Code (Managed Only)

    【讨论】:

    • @Malcolm:谢谢。这为我节省了很多时间
    • 在我的情况下(基于环境设置),此选项在工具 > 选项 > 调试 > 常规 > 选中启用我的代码(仅限托管)下可用
    【解决方案2】:

    转到 Debug -> Exceptions 并取消勾选所有内容。这将告诉调试器仅在未处理的异常上中断。未处理的异常是未“捕获”的异常,它们不会在适当的 try/catch 中发生。

    但请理解,无论发生哪种类型的异常,如果不处理,调试器将中断或应用程序将退出。这就是它应该如何工作的方式。如果您希望发生异常,请将罪魁祸首代码包装在适当的 try/catch 块中。

    在这种情况下

    try
    {
    ...
    }
    catch (CultureNotFoundException ex)
    {
       // Show your own message here, or otherwise handle the exception
    }
    

    【讨论】:

    • 我希望它打破我的代码中已处理的异常,而不仅仅是未处理的异常。
    • 抱歉,误解了您的问题。在这种情况下,勾选 Common Language Runtime Exceptions
    • 已经打勾了。勾选后,它会中断 .NET Framework 中的所有异常。取消勾选它不会破坏任何东西。
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多