2008-10-16 5 views
1

VB 스크립트가 있습니다. 파일에 오류 정보를 기록해야합니다. 오류 번호 오류 설명과 같은 모든 정보를 기록해야하며 하위 루틴에서 오류가 발생합니다.VB 스크립트에서 오류를 처리하는 방법

일부 코드 clausule "오류에"사용 VBScript로 처리 오류에 대한

+2

왜이 기능이 필요하다고 생각하는지 설명하면 더 좋을 수도 있습니다. 솔직히 VBScript 오류 처리가 매우 약한 당신이 지금까지 설명한 내용을 달성하기위한 실질적인 수단이 없습니다. – AnthonyWJones

답변

-3

에게 알려주십시오. , 오류 처리하는 방법을 3 가지 방법이 있습니다 : 다음 '을 다시 시작

  • 오류에를'오류를 오류 고토 0
  • 를 무시가 '에러' '오류 고토는 handleError에
  • 을 handlning 에러 코드를합니다 제거 지정된 신호로 이동

샘플 :

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 
+15

Thee는 VBScript의 On Error GoTo Handler 기능이 아니며 VBScript의 Goto도 아닙니다. – AnthonyWJones

3

당신은 사용할 수있다 VBScript를 사용하는 경우 FileSystemObjectError 개체가 있습니다.

다음을 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 

오류 등을에 대한 자세한 정보를 얻으려면 다음 ASPError를 사용할 수있다 ASP 페이지를 사용하는 경우 행 번호 등 (CreateObject를 Server.CreateObject로 바꾸십시오).

편집 : .vbs 스크립트에서 오류의 원인이 된 줄 번호를 얻으려면이를 매개 변수로 하위 루틴에 추가 할 수 있습니다.

2

VBScript는 오류시 goto 레이블을 지원하지 않습니다. 작동하지 않습니다 다음 코드 조각 - :

'오류 고토는 handleError에' '오류에 지정된 신호

희미한 AA = 15/0

고토 마침 점프를 코딩한다'는 오류

를 건너 뜁니다

handlingHandleError :

어둡게 msgSet

MSG = & 프로그램 Err.Description vbCrLf,488,오지 Err.Number

있는 MsgBox msgFinish은 : 'sciprt

1

의 끝이 어떻게 루프 (또는 다른 루프) 내부 전체 하위 또는 기능을 넣고있다'. 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 
관련 문제