例: LogError method

  1. 次のスクリプトは Domino のエラーをファイルに記録します。データベースを開けなかったとき、lsERR_NOTES_DATABASE_NOTOPEN エラーが起こります。例えば、OpenMail メソッドが呼び出された後、現在のユーザーのメールデータベースが見つからなかったときに、このエラーが起きたとします。エラーが起きると、制御が logDbOpenError ラベルに渡され、エラーコードと文字列がファイル LOG.TXT に保存されます。LOG.TXT の行の例を次に示します。
    Ornithology Agent: 10/25/95 02:48:40 PM: Error (4063): Unable to open db CPycha.nsf

    Domino エラー定数を使用するには、スクリプトにファイル LSXLERR.LSS がインクルードされていなければなりません。

    Sub Initialize
      On Error lsERR_NOTES_DATABASE_NOTOPEN Goto logDbOpenError
      Dim currentLog As NotesLog
      Dim db As NotesDatabase
      Dim collection As NotesDocumentCollection
      Set currentLog = New NotesLog( "Ornithology Agent" )
      Set db = New NotesDatabase( "", "" )
      Call db.OpenMail
      Call currentLog.OpenFileLog( "c:¥log.txt" )
      Set collection = db.AllDocuments
      ' error might occur here
      Call currentLog.Close
      Exit Sub
    logDbOpenError:
      Call currentLog.LogError _
      ( lsERR_NOTES_DATABASE_NOTOPEN, _
      "Unable to open db " & db.FileName ) 
      Resume Next
    End Sub
  2. 次のスクリプトはユーザー定義エラーをファイルに記録します。スクリプトは現在のデータベースで全文検索をして、単語「Rocks」を検索します。一致する文書が見つからないとき、スクリプトは同じコンピュータの他のデータベースにエラーを記録します。この条件は Domino でも LotusScript® でもエラーになりません。ただし、LogError メソッドを使用することにより、スクリプトの実行が完了されない任意の条件をログに記録できます。
    Sub Initialize
      Dim currentLog As NotesLog
      Dim session As New NotesSession
      Dim db As NotesDatabase
      Dim collection As NotesDocumentCollection
      Dim doc As NotesDocument
      Set currentLog = New NotesLog( "Geology Agent" )
      Call currentLog.OpenNotesLog( "", "agentlog.nsf" )
      Set db = session.CurrentDatabase
      Set collection = db.FTSearch( "Rocks", 0 )
      If ( collection.Count = 0 ) Then
        Call currentLog.LogError( 0, "No documents found." )
      Else
        Set newsletter = New NotesNewsletter( collection )
        Set doc = newsletter.FormatMsgWithDoclinks( db )
        Call doc.Send( False, "Thalia Ruben" )
      End If
      Call currentLog.Close
    End Sub
  3. 次のエージェントスクリプトは LotusScript エラーをメールメモに記録します。スクリプトが数値を 0 で除算しようすると、エラー ErrDivisionByZero が起きます。エラーが起きると、制御が LogThisError ラベルに渡され、LogError メソッドがメールメモの本文にテキスト行を追加します。例を次に示します。
    10/25/95 04:58:29 PM 	Let's do division starting
    10/25/95 04:58:29 PM 	Error (11): Division by zero

    LotusScript のエラー定数を使用するには、スクリプトにファイル LSERR.LSS がインクルードされていなければなりません。

    Sub Initialize
      On Error ErrDivisionByZero Goto LogThisError
      Dim currentLog As New NotesLog( "Let's do division" )
      Dim x As Integer, y As Integer, z As Integer
      Call currentLog.OpenMailLog _
      ( "Joe Perron", "Division log" )
      y = 9
      z = 0
      x = y / z            ' error
      Call currentLog.Close
      Exit Sub
    LogThisError:
      Call currentLog.LogError( ErrDivisionByZero, _
      Error$( ErrDivisionByZero ) )
      Resume Next
    End Sub
  4. 3 のスクリプトの OpenMailLog の呼び出しを次の呼び出しと置換します。
    Call currentLog.OpenNotesLog( "", "agentlog.nsf" )

    この場合、LogError メソッドは AGENTLOG.NSF に文書を新規作成します。文書には次のアイテムが含まれます。

    A$PROGNAME	"Let's do division"
    A$LOGTIME 	10/25/95 04:42:24 PM
    A$USER		"Kerry Bowling"
    A$LOGTYPE	"Error"
    A$ERRCODE	11
    A$ERRMSG	"Division by zero"
  5. 3 のスクリプトの OpenMailLog の呼び出しを次の呼び出しと置換します。
    Call currentLog.OpenFileLog( "c:¥log.txt" )

    LogError メソッドは LOG.TXT にテキスト行を新規追加します。LOG.TXT の例を次に示します。

    Let's do division: 10/25/95 04:49:51 PM: Error (11): Division by zero