【问题标题】:Exception thrown by a thread in a third party library第三方库中的线程抛出的异常
【发布时间】:2012-08-17 17:10:43
【问题描述】:

我在我的代码中使用了第三方库。第三方库中的一种方法是从线程池中获取一个线程并对其进行一些工作。不幸的是,它从它的线程中抛出了一个异常,我无法捕获和处理它,因为它来自不同的线程。

我知道此异常不会对应用程序造成任何损害(它不是内存不足异常或类似情况),因此我想记录它并稍后在可能成功时再次尝试该操作。

我目前正在使用 AppDomain UnhandledException 事件记录异常,但我的应用程序仍在终止。有什么办法可以捕捉到这个异常并处理它?

【问题讨论】:

    标签: c# exception-handling


    【解决方案1】:

    跨线程捕获异常真的很难,事实上我认为这是不可能的。

    唯一的解决方法是查看他们的第三方库是否有可以通知您异常的回调例程。

    检查该库的 docs/api。

    【讨论】:

    • 我遇到了 0MQ 这个问题,它是一个线程库。他们正在终止而不是正确抛出异常,所以如果它可用,我会检查库的来源。
    • +1。不可能。您可以使用AppDomain.CurrentDomain.UnhandledException 事件来接收异常。但它不会阻止应用程序崩溃。但是您至少可以从那里重新启动它。 (Process.Start())
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多