gpt4 book ai didi

c# - 不可捕获的异常

转载 作者:行者123 更新时间:2023-11-30 12:53:02 25 4
gpt4 key购买 nike

跟进: The uncatchable exception, pt 2

我正在编写自定义绑定(bind)引擎;在目标元素上设置 DataContext 之前调用我的转换器。这本身没什么大不了的,因为它会在 DataContext 最终收到一个值时得到更新。 导致问题的是我收到的 NullReferenceException,因为 DataContext 为 null,这似乎不想被捕获。

即使我试图在我的值转换器中捕获异常:

try {
return ( (MethodInfo)_member ).Invoke( parameter, null );
} catch {
return null;
}

出于某种原因,调试器此时仍处于暂停状态。

alt text

(这在堆栈跟踪中备份了一点到 catch block 所在的位置——实际的异常发生在 _member 方法内部。奇怪的是 catch block 是灰色的,但从未到达断点。)

现在我想这可能是因为异常发生在另一个程序集中,从它被捕获的地方(我试图将它打包到一个可重用的类库中,上面的 _member 指向应用程序程序集中的一个方法).

如果我在没有调试器的情况下运行我的小测试应用程序,它可以正常工作,但是我的应用程序更加健壮并且具有一般异常处理,因此会被触发。

我想知道是否只有一些属性或其他东西(或者我可能缺少一些反射参数?)我可以用来使异常像预期的那样被捕获。

更新:我很确定这一定是由于反射和使用了 MethodInfo.Invoke。似乎异常首先是“TargetInvocationException”,内部异常为 NullReferenceException。似乎调用异常以某种方式发生在调用堆栈之外,因此没有被捕获在其中。我没有对线程做任何事情,但也许 MethodInfo.Invoke 内部正在进行某种隐式线程转移?

有没有人知道我如何强制捕获它,或者可能有另一种方法从不会出现此问题的方法名称调用方法?我有点难过。

最佳答案

检查调试器异常设置,看看您是否告诉调试器在抛出 NullReferenceException 时中断。

关于c# - 不可捕获的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3050099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com