很长一段时间,当我有一个错误处理程序时,我会报告项目,模块和过程错误是在哪里引发的。我总是通过简单地通过常量存储它们的名称来完成此任务。我知道在一个类中,你可以通过TypeName(Me)以编程方式获得名称,但显然只有当我不在“标准”模块中时,才能获得三条信息中的一条信息。如何判断我的代码在执行哪个模块?
我没有使用常量真的很大的问题,只是人们并不总是保持它们最新,或者更糟的是他们复制和粘贴,然后你有错误的名称被报告等等。所以我想要做的是找出摆脱示例中显示的常量的方式,而不会丢失信息。
Option Compare Binary
Option Explicit
Option Base 0
Option Private Module
Private Const m_strModuleName_c As String = "MyModule"
Private Sub Example()
Const strProcedureName_c As String = "Example"
On Error GoTo Err_Hnd
Exit_Proc:
On Error Resume Next
Exit Sub
Err_Hnd:
ErrorHandler.FormattedErrorMessage strProcedureName_c, m_strModuleName_c, _
Err.Description, Err.Source, Err.Number, Erl
Resume Exit_Proc
End Sub
有没有人知道代码的方法来告诉它在哪里?如果最终能证明它不能来完成,这是一个答案太:)
编辑:
我也知道,该项目名称为Err.Source。我希望能够在没有其他用途的情况下得到它。如果你知道的很好,如果不是的话,我们可以将其定义为问题的范围之外。
我也知道如何获取错误行,但这些信息当然只有在不了解Module.Procedure的情况下才会有所帮助。
所有在此线程的答案是好的,探索有效的技术,虽然没有真的让我到哪里,我试图去。我接受了我所做的一个,因为它最接近完成我正在尝试做的事情,并且有人应该得到要点。 – Oorang 2009-10-06 14:02:12