如何在vb.net类库项目中记录未处理的异常?

时间:2015-07-30 13:47:02

标签: vb.net logging dll class-library exception-logging

我正在为Solidworks EPDM(example from API help)创建一个加载项。这是一个类库(.dll)项目,它被添加到EPDM中,并允许将一些自定义函数添加到程序中。

我想为未处理的错误添加日志记录,以便当我的加载项(而不是Solidworks EPDM程序本身)引起异常时,我会收到通知并尝试修复它。

我对这一切都很陌生(而且所有这一切我的意思是VB.NET作为一种语言,编程除了VBA中的宏,结构化异常处理,错误记录等),我正在尝试按照MSDN How To: Log Exceptions in Visual Basic进行操作,但是记录无法处理的异常的说明似乎不适用于类库项目。

具体来说,我不知道如何通过第3步:

  

记录未处理的例外
  1.在解决方案资源管理器中选择一个项目。在项目菜单上,选择属性   2.单击应用程序选项卡   3.单击查看应用程序事件按钮以打开代码编辑器   这将打开ApplicationEvents.vb文件。

View Application Events按钮对于类库项目是灰色的。

enter image description here

那么,是否有另一种方法可以在类库项目中为未处理的异常添加日志记录?或者,另一种访问类库对象的ApplicationEvents.vb文件的方法?我已尝试搜索其中任何一个,并且尚未找到允许我记录未处理的异常的解决方案。

1 个答案:

答案 0 :(得分:2)

这是一个非常基本的示例,但在IEdmAddIn5定义的唯一两个接口方法(主机“回调”)中使用Try / Catch包装代码,以及您的加载项类必须实现的方法。

Public Sub GetAddInInfo(ByRef poInfo As EdmAddInInfo, ByVal poVault As IEdmVault5, ByVal poCmdMgr As IEdmCmdMgr5) Implements IEdmAddIn5.GetAddInInfo
    Try
       ...
    Catch ex As Exception
       ' Handle exception...
    End Try
End Sub

Public Sub OnCmd(ByRef poCmd As EdmCmd, ByRef ppoData As System.Array) Implements IEdmAddIn5.OnCmd
    Try
       ...
    Catch ex As Exception
       ' Handle exception...
    End Try
End Sub

我通常会同意@Hans Passant关于重新抛出异常但我一般都发现EPDM加载项存在问题,因为它可能导致COM主机崩溃。