【问题标题】:VS2010 Debugger Breaking on Handled ExceptionVS2010 调试器在处理异常时中断
【发布时间】:2012-03-13 07:57:05
【问题描述】:

我有 MS Test 单元测试,确保当被测方法给出错误参数时会抛出 Exception。我正在使用该模式:

My actual;
bool threw = false;
try
{
    actual = target.DoSomething(aBadParameter);
}
catch
{
    threw = true;
}

Assert.IsTrue(threw);

我将 CLR 异常设置为仅在用户未处理时中断(而不是在抛出时)。但是,当DoSomething() 抛出new Exception() 时,调试器会中断。如果我恢复,则单元测试成功完成。

如果我将单元测试代码剪切并粘贴到主程序中并在主程序的上下文中运行它(而不是在 MS 测试下),调试器不会在用户处理的异常处中断。

如何防止调试器中断我的用户处理的异常?

这并没有出现在与

相关的表面上

Getting an Unhandled Exception in VS2010 debugger even though the exception IS handled

因为在这种情况下,异常被抛出在不同的线程上,并被 CLR 在回调中重新抛出。

【问题讨论】:

    标签: debugging mstest


    【解决方案1】:

    在 MSTest 中测试抛出异常的惯用方法是使用 ExpectedException 属性:

    [TestMethod]
    [ExpectedException(typeof(FooException))]
    public void ThrowsFooExceptionWithBadInput()
    {
         var actual = target.DoSomething(aBadParameter);
    }
    

    【讨论】:

    • 我正要输入这个。+1
    • 我得到与 ExpectedException 完全相同的行为。见stackoverflow.com/questions/2628965/…
    • @Eric J:刚刚注意到这可能无法解决您问题中的主要问题 - 即使处理了异常,调试器也会中断。让我知道这是否有帮助,否则将删除。
    • @EricJ.:嗯,你基本上与答案有关 - 还有什么要说的?
    • @BrokenGlass:接受的答案对我不起作用(我之前曾尝试过)。但是,未投票的答案之一确实解决了我的问题:工具|选项|调试并取消选中“仅启用我的代码”。接受是因为你的回答让我回到了正确的道路上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多