0

我正在尝试编写一些代码来帮助我错误处理我的软件的编译版本。我必须在几台不同的 PC 上以编译版本的形式运行该软件,以加快将数据上传到我的数据库的速度。我有一个脚本,当其中一台 PC 遇到错误时,它会向我的地址发送一封电子邮件,而我不必反复检查。

在电子邮件中,我有发生错误的 sub 和错误号。但是我也想要导致错误的行。我尝试使用,errorobject.erl但是无论错误的位置如何,这只是给了我零值。我也尝试errorobject.source给我一个更详细的错误位置,但是这只是返回microsoft.visualbasic,错误的这个属性可以返回更详细的东西吗?

以下是我的代码:

 Public Sub SendErrorReport(ByVal ErrorObject As Microsoft.VisualBasic.ErrObject, ByVal Routine As String)
    'On Error GoTo Err

    Dim Recipient As String = "email1; email2"

    ' Create an Outlook application.
    Dim oApp As Outlook._Application
    oApp = New Outlook.Application()

    ' Create a new MailItem.
    Dim oMsg As Outlook._MailItem
    oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
    oMsg.Subject = "Notitia software - Error report"
    oMsg.Body = "Error occurred at " & Format(Now.Hour, "00") & ":" & Format(Now.Minute, "00") & " in " & Routine & ". Error no." & Str(ErrorObject.Number) & " - " & ErrorObject.Description & vbCr & vbCr & " - Error Line: " & ErrorObject.erl
    ' TODO: Replace with a valid e-mail address.
    oMsg.To = Recipient

    ' Send
    oMsg.Send()

    ' Clean up
    oApp = Nothing
    oMsg = Nothing

    Exit Sub
Err:
    MsgBox("Error in " & Routine & ". Error no." & Str(ErrorObject.Number) & " - " & ErrorObject.Description)

End Sub

因此,基本上我正在寻找一种方法来增加有关此子可以发送给其收件人的错误的信息。非常感谢您的帮助。

4

1 回答 1

0

Try Catch代替旧的 VB6/VBA 方式使用on Error GOTO. 例外StackTrace将为您提供所需的信息。

于 2012-11-06T13:33:26.860 回答