2009-01-06 52 views
2

在VS调试器中,未捕获的异常导致程序在异常抛出(或接近足够的程度)时处于中断状态,并处于允许您查看所有堆栈帧的状态并且在那里有局部变量。抓到的异常被捕获

有没有办法得到这个相同的结果(中断时抛出),但是在特定点捕获异常?我对这样做并不感兴趣,因为所有例外或者甚至是给定类型的所有例外(这可能真的很快就没用),但是如果我可以为单个尝试或catch块做到这一点,我会很开心

有点相关:

+0

澄清PLZ:你想让调试器停止对未处理的异常,但只在某些方法?或者你想在你的catch块内停下来吗? – jcollum 2009-01-06 23:48:26

+0

@jcollum,nether。我希望调试器在抛出点停止,但只有当异常将在给定位置被捕获。 – BCS 2009-01-06 23:53:58

+0

导致异常的位置应该在堆栈跟踪中(不是100%)。这是最好的你会得到。 – jcollum 2009-01-07 00:04:09

回答

5

是否调试 - >例外对话框,你想要做什么?您可以选择哪些异常导致VS中断,而不管它们是否被捕获。我不知道只能根据抛出的异常的类型为代码的某个部分执行此操作的方法。

2

是的,你应该能够在你的catch块的最后一个大括号上放置一个断点。或者如果你正在重掷投掷命令。

如果你只是需要在某个方法内部的任何异常上有一个断点,那么重新抛出。

try { } 
catch (Exception exc) 
{ 
    throw; // <-- breakpoint here 
} 

编辑:我曾经习惯于把断点放在我所有的例外上。发现困难的方式,一旦我达到大约25个断点,这会大大减慢调试器的速度。可能只与VS2005有关。

Edit2:导致异常的位置应该在exc对象的StackTrace中。