代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

visual studio 2008,在调试时动态抛出错误?

  •  2
  • JL. Hans Passant  · 技术社区  · 14 年前

    我正在调试一些代码,希望在不实际为exception.throw准备代码的情况下抛出错误。

    当我正在调试并且代码行在函数中以黄色突出显示时,是否仍有动态抛出一般异常的方法?

    这将节省我在调试会话期间的大量时间。

    谢谢

    3 回复  |  直到 14 年前
        1
  •  1
  •   Alistair Evans    14 年前

    您是否询问是否可以通过编程方式导致调试器中断,如果是,则:

    Debugger.Break();
    

    如果要在调试点引发异常,如果已禁用优化生成,则可以就地编辑并插入 throw new Exception(); 语句之后,将执行点移到该行,跨过该行,这将导致调试器跳转到catch。然后你就可以移除你刚才插入的线。如果不插入一些实际的代码来抛出异常,就无法做到这一点。

        2
  •  0
  •   quamrana    14 年前

    我的建议是把一个测试用例放在一起,这个测试用例保证,由于输入数据的原因,程序将在您所看到的点抛出一个异常。

    当可能抛出异常时,您只需要一个try/catch,因此必须在某个地方有一个抛出-这只是触发它的情况。

    另一种方法是提供某种模拟对象,该对象在所讨论的代码行中调用,唯一的工作是抛出所需的异常。

        3
  •  0
  •   JL. Hans Passant    14 年前

    好的,我会回答我自己的问题,因为我真的认为这种功能应该包含在未来的.NETIDE中。

    想象一下调试代码,在单步执行时,突出显示一段代码,右键单击,然后选择抛出异常。下拉列表中提供了预定义的异常,否则只是一个普通的新异常。这样您就可以更快地测试代码,而不必编写特定的测试用例。

    我也不相信编写测试用例总是可能的。例如,假设我正在从web服务请求数据。我想捕捉以下异常:ssl信任失败、连接被拒绝、404资源未找到。如果有方法编写这些测试用例,我会很惊讶,因为您请求的服务不是您自己的。在这些情况下,想象一下,如果您可以直接介入,在所需的点上,右键单击,选择throw new exception,然后通过一个对话框选择所需的异常类型,会有多好。。在这种情况下,在调试模式下运行一次代码,每次要测试新的异常类型时,只需执行右键单击操作。无需停止/启动调试器,也无需在所有地方编写任何临时抛出异常,这些异常最终将需要在生产版本中出现。

    我也会提到你也应该能够退一步的捕获部分,这是目前不可能的,我知道。


    无论如何,据我所知,在调试时动态触发此类异常的最佳方法是将调试位置拖放到以前从未运行过的依赖代码的位置,从而使您放置的当前代码行无效。这是我知道的唯一方法,所以如果你知道其他方法,请留下一个更好的答案。

    为了说明我的观点

    1. 创建DIR
    2. 在目录中创建文件

    如果不运行第1行,则通过将调试器拖放到第2行,第2行现在将抛出异常,因为现在目录不存在,如果代码正常运行,则会出现异常。

    哈哈-如果我为vs团队工作,你们都会更高兴的开发人员。