C# 只有立即重试捕获才能捕获异常

C# 只有立即重试捕获才能捕获异常,c#,.net-4.0,C#,.net 4.0,我有奇怪的行为 我的客户端软件(C#.net 4)调用外部dll的一些函数(它是在同一家公司用C#编写的,在部署中没有只包含代码的dll) 在一些测试中,我知道如何使外部dll崩溃(重命名其工件之一) 奇怪的是: 只有当我在客户端尝试\捕捉即时呼叫时,我才能捕捉到它。 如果我删除了try\catch,并指望我的大try\catch应用程序-我的应用程序挂起!!它卡在对外部dll的调用中 现在,我可以在代码中添加catch-throw,但我想了解为什么会发生这种情况?如果没有看到任何代码,很难说。

我有奇怪的行为

我的客户端软件(C#.net 4)调用外部dll的一些函数(它是在同一家公司用C#编写的,在部署中没有只包含代码的dll)

在一些测试中,我知道如何使外部dll崩溃(重命名其工件之一)

奇怪的是: 只有当我在客户端尝试\捕捉即时呼叫时,我才能捕捉到它。 如果我删除了try\catch,并指望我的大try\catch应用程序-我的应用程序挂起!!它卡在对外部dll的调用中


现在,我可以在代码中添加catch-throw,但我想了解为什么会发生这种情况?

如果没有看到任何代码,很难说。可能是一个中间的捕获过程,在执行smthg的过程中会出现异常。可能你的大尝试\捕获不包括该调用。也许它是在不同的线程中执行的?谢谢。我的大try\catch是一个常规(例外e)…调用在一个线程中(可能是外部线程打开其他线程)。问题是,在这个操作之后,我有很多日志不会发生-真的挂起;)如果没有写入日志,这并不意味着它挂起。如果发生异常,代码执行会立即跳转到cacth块,甚至不会尝试执行日志写入调用。所以它不会挂起来。只是不处理异常。顺便说一下,catch(Exception)不会捕获某些异常类型(不符合CLS的异常),但我认为这不是您的情况。只需尝试添加Intermediate捕获,并找出发生异常时调用堆栈上没有您的大捕获的原因。谢谢,我将尝试一下,如果我对这种奇怪行为有一些见解,我将与大家分享