Очень долго, когда у меня есть обработчик ошибок, я заставляю его сообщать, в какой проект, модуль и процедуру была добавлена ошибка. Я всегда выполнял это, просто сохраняя их имя через константы. Я знаю, что в классе вы получаете имя программно с помощью 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.