在.NET excel addins(XLL)中捕获未处理的异常?

时间:2010-09-22 14:51:21

标签: c# excel exception-handling

我正在尝试为.NET excel插件附加未处理的异常处理程序。问题是永远不会调用异常处理程序。

AppDomain.CurrentDomain.UnhandledException不起作用 - 永远不会触发事件。

无法使用Application.Current.DispatcherUnhandledException,因为excel插件代码中的Application为null。

如何连接未处理的异常处理程序呢?

2 个答案:

答案 0 :(得分:3)

您可能无法,因为该应用程序实际上是一个非托管应用程序。你可能只需要在片状区域附近放置try / catch块。

答案 1 :(得分:0)

从XLL中的用户定义函数中,您必须捕获异常。您应该使用catch处理程序来捕获所有内容。这是一种代码味道,但要确保捕获中的错误的任何日志记录或其他处理都不会通过使用空catch处理程序包装它来抛出。

与任何功能区事件处理程序的UI线程相同。

如果您创建自己的窗口,那么您泄漏的任何异常都会崩溃。如果您正在使用WPF窗口,则可以在连接插件期间从调度程序设置全局处理程序。

Dispatcher.CurrentDispatcher.UnhandledException + = CurrentDispatcher_UnhandledException;

Excel充其量是挑剔的,所以请像dottie

一样对待她