如何在Visual Studio中调试时强制执行异常?

Rya*_*ohn 43 .net c# visual-studio

我在调试模式下运行我的应用程序,我想手动抛出异常(即不在代码中).有没有办法做到这一点?

当然,throw new Exception("My forced exception");在Command或Immediate窗口中运行不起作用.

编辑:我希望异常被我正在调试的代码周围的try-catch语句捕获.

Rya*_*ohn 62

一种可能的方法是在一行上断开并手动将代码路径中的可空变量更改为null恰好在其上的操作发生之前.这将导致NullReferenceException抛出.

  • 它还假定主题代码使用您可以更改的参考变量。如果该方法使用所有值变量怎么办? (4认同)

Bel*_*gix 11

您可以添加类似于的方法:

public static void ThrowAnException(string message)
{
    throw new ApplicationException(message);
}
Run Code Online (Sandbox Code Playgroud)

然后,使用立即窗口,您可以打电话ThrowAnException("Whoops")

  • 我认为这会破坏目的.为了能够调试异常而添加此代码对我来说似乎是一个坏主意.我宁愿修改状态并以这种方式触发异常. (3认同)
  • 不会被代码捕获,它只是在调试器中抛出一个不影响应用程序的异常. (3认同)
  • 立即窗口中的异常不会传递回正在运行的代码状态,是吗? (2认同)
  • @Brian Rasmussen:实际上,我非常同意Belogix,在运行中手动修改状态似乎既易于出错,又容易受到意外的副作用.此外,经常无法轻易访问您要修改的状态.像这样的公共静态方法只能被抛入调试实用程序类/库并从任何地方调用. (2认同)
  • 尽管确实会引发异常,但是正在运行的代码无法捕获该异常。我尝试设置一个示例,在调试器处于try-catch范围内时调用ThrowAnException()。异常在调试器中引发,但未捕获。我可以继续运行代码,就像从未发生过异常一样。 (2认同)