2012-11-04 84 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对象。