繁体   English   中英

为什么我无法捕获第三方库引发的异常?

[英]Why I can't catch an exception thrown from third party library?

通过使用第三方库,我遇到了有趣的情况。 以下代码在异常时中断:

var instance = new Class(arg);

但是,当此行包含在try/catch块中时,永远不会捕获异常。

当然,只有启用了对给定异常类型的中断后,Visual Studio调试器才会在异常上停止。 禁用后,异常消失(完全消失)。 catch块永远不会执行。 使用catch (Exception exc) {}还是catch {}并不重要。 异常是从Exception派生的。

这怎么可能?

我想这可能是“仅调试”异常的常见技巧或做法。 第三方库使用如下代码:

public class Class
{
    public Class(object arg)
    {
        try
        {
           ...
           throw new Exception("message");
           ...
        }
        catch
        {
            // This is just empty. By purpose.
        }
        finally
        {
            ...
        }
    }
}

然后,调试器将在throw语句上停止(如果已配置为这样做),但是由于“已处理”异常,因此它不会传播到其他任何地方...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM