1

私はVBスクリプトを持っています。エラー情報をファイルに記録する必要があります。エラー番号エラーの説明やエラーが発生したサブルーチンなど、すべての情報をログに記録する必要があります。

いくつかのコードを提供してください

4

4 に答える 4

3

VBScriptは、エラーgotoラベルをサポートしていません。次のコードは機能しません-:

エラー時GoToHandleError''エラー時コードは指定された信号にジャンプします

Dim aa = 15/0

GoToFinish''はエラーをスキップします

HandlingHandleError:

Dim msgSet

msg = Err.Description&vbCrLf&Err.Number

MsgBox msgFinish:''sciprtの終わりがあります

于 2008-11-20T11:05:15.517 に答える
3

VBScript を使用している場合は、FileSystemObjectオブジェクトとErrorオブジェクトを利用できます。

以下を error.vbs に貼り付けて実行します。エラーがスローされ、詳細が c:\errors.log というファイルに記録されます。

Option Explicit

On Error Resume Next ' Potential error coming up
Dim MyArray(5)
MyArray(7) = "BWA HA HA"
If Err.Number <> 0 Then
    LogError(Err)
    Err.Clear
End If
On Error Goto 0 ' Stop looking for errors 

Sub LogError(Details)
    Dim fs : Set fs = CreateObject("Scripting.FileSystemObject")
    Dim logFile : Set logFile = fs.OpenTextFile("c:\errors.log", 8, True)
    logFile.WriteLine(Now() & ": Error: " & Details.Number & " Details: " & Details.Description)
End Sub

ASP ページを使用している場合は、ASPErrorを使用して、行番号などのエラーに関する詳細情報を取得できます (CreateObject を Server.CreateObject に置き換えることを忘れないでください)。

編集: .vbs スクリプトでエラーの原因となった行番号を取得するには、これをパラメーターとしてサブルーチンに追加できます。

于 2008-10-16T10:04:26.780 に答える
1

サブルーチンまたは関数全体を do ループ (または他のループ) 内に配置します。エラー処理を do ループの外側に置く

private sub BucketList()
do while 1=1
  ClimbMountain(top)
    if err.Number <> 0 then exit do
  SwimOcean(deep)
    if err.Number <> 0 then exit do
  GiveErrorHandlingToVBS(isNeverGoingToHappen)
    if err.Number <> 0 then exit do

  exit do
loop

'Error Handler
if err.Number <> 0 then
  'handle error
end if

end sub
于 2010-12-05T01:13:06.903 に答える
-3

VBScript でのエラー処理には、"On Error" 句が使用されます。エラーを処理する方法は 3 つあります。

  • On Error Resume Next '' エラーを無視
  • On Error GoTo 0 '' はエラー処理を削除します
  • On Error GoTo HandleError '' エラーの場合、コードは指定されたシグナルにジャンプします

サンプル:

On Error Resume Next '' ignore errors
SomeIgnorableFunction()

On Error GoTo 0 '' removes error ignoring
SomeImportantFunction()

On Error GoTo HandleError '' on error will code jump to specified signal
Dim a
a = 15 / 0

GoTo Finish '' skips error handling

HandleError:
Dim msg
Set msg = Err.Description & vbCrLf & Err.Number
MsgBox msg

Finish:
'' there is end of sciprt
于 2008-10-16T07:35:02.103 に答える