C# 如何使异常出现在异常源而不是调用点?

C# 如何使异常出现在异常源而不是调用点?,c#,.net,exception,reflection,C#,.net,Exception,Reflection,我已经编写了一个命令管理器,它使用反射来调用各种方法,它工作得非常出色,除了当一个处理程序中发生异常时,中断调试发生在命令管理器中,而不是在异常最初抛出的时候。有没有办法让它立即进入异常,而不是在我调用Invoke的时候?你的意思是在调试时?如果是,则转到调试菜单->异常,然后可以将调试器配置为在引发异常而不是捕获异常时中断 您可以为所有异常启用该功能,或者如果您知道您感兴趣的异常类型,则可以仅为该异常启用该功能。通过选择调试->异常打开异常设置窗口 在这里,您可以找到正在抛出的CLR异常。您可

我已经编写了一个命令管理器,它使用反射来调用各种方法,它工作得非常出色,除了当一个处理程序中发生异常时,中断调试发生在命令管理器中,而不是在异常最初抛出的时候。有没有办法让它立即进入异常,而不是在我调用Invoke的时候?

你的意思是在调试时?如果是,则转到调试菜单->异常,然后可以将调试器配置为在引发异常而不是捕获异常时中断


您可以为所有异常启用该功能,或者如果您知道您感兴趣的异常类型,则可以仅为该异常启用该功能。

通过选择调试->异常打开异常设置窗口

在这里,您可以找到正在抛出的CLR异常。您可以将设置更改为在引发异常而不是用户未处理时中断


这将使它在适当的时间中断。

因为命令管理器可以执行任何命令,所以异常的类型未知。不幸的是,这正是.NET中调试器的工作方式。如果抛出的异常位于后台线程中,则不能使其中断,等等。。。这很好,但实际上只是其中之一。话虽如此,但我并不为此烦恼-内部异常信息具有正确的堆栈跟踪和正确的行号,因此这很烦人,但实际上并不需要调试问题。这就是我一直在解决的问题,但这也意味着我没有为调用获得适当的堆栈,这意味着我必须希望异常足够一致,以便在我在抛出代码上设置断点后下次会发生异常。关于你对另一个线程的评论,我相当肯定这一切都发生在一个线程中。因为命令管理器可以执行任何命令,所以异常的类型是未知的。这不会对其他类型的异常捕获产生负面影响。我只想通过调用中断调用的位置。否则,我将捕获各种最终将被处理的异常,不是吗?