2012-11-04 87 views
0

下面的代碼提供了錯誤Variable is undefined (500)試圖以連接error.no回聲時:克隆的VBScript Err對象

'Raise an error to represent an issue with the main code 
err.raise 999 

dim error 
set error = err 

'Call another function that could also throw an error 
SendMail "To=me","From=me","Subject=Failure in main code" 

'Report both errors 
wscript.echo "First problem was - Error code:" & error & vbcrlf & "Subsequent problem was - Error code:" & err 

是否有可能克隆Err對象?

回答

1

除了Ekkehard.Horner,您還可以使用與錯誤對象相同的行爲創建自定義錯誤類。因爲err對象是全局的,所以你可以在類中加載它,而不用在方法中傳遞它。

On error resume Next 
a = 1/0 
Set myErr = new ErrClone 
On error goto 0 

WScript.Echo myErr 
' returns 11, the default property 
WScript.Echo myErr.Number & vbTab & myErr.Description & vbTab & myErr.Source 
' returns 11  Division by zero  Microsoft VBScript runtime error 

Class ErrClone 

    private description_, number_, source_ 

    Public Sub Class_Initialize 
     description_ = Err.Description 
     number_ = Err.Number 
     source_ = Err.Source 
    End Sub 

    Public Property Get Description 
     Description = description_ 
    End Property 
    Public Default Property Get Number 
     Number = number_ 
    End Property 
    Public Property Get Source 
     Source = source_ 
    End Property 
End Class 
0

全球Err對象的屬性複製到供以後使用一個新的變量(全球ERR被新catastrophies更改後.Clear,或「對錯誤轉到0」。),你應該使用數組:

>> On Error Resume Next 
>> a = 1/0 
>> Dim aErr : aErr = Array(Err.Number, Err.Description, Err.Source) 
>> On Error GoTo 0 
>> WScript.Echo Join(aErr, "-") 
>> 
11-Division by zero-Microsoft VBScript runtime error 

因爲你不能在VBScript中創建一個空的Err對象。