4 Const F_ErrInCaller = 1
\r
5 Const F_ErrInFinish = 2
\r
6 Const F_ErrInCancel = 4
\r
7 Const F_ErrInRelease = 8
\r
8 Const F_NotCallFinish = 16
\r
15 WScript.Echo "Finish(1)"
\r
16 If g_ErrEmulate and F_ErrInFinish Then WScript.Echo "ERROR!" : Err.Raise 1,,"in Finish"
\r
17 WScript.Echo "Finish(2)"
\r
21 Private Sub Class_Terminate()
\r
22 Dim en,ed : en = Err.Number : ed = Err.Description
\r
23 On Error Resume Next ' This clears the error
\r
25 WScript.Echo "Cancel"
\r
26 If g_ErrEmulate and F_ErrInCancel Then WScript.Echo "ERROR!" : Err.Raise 1,,"in Cancel"
\r
28 WScript.Echo "Release"
\r
29 If g_ErrEmulate and F_ErrInRelease Then WScript.Echo "ERROR!" : Err.Raise 1,,"in Release"
\r
30 ErrorCheckInTerminate
\r
31 If en = 0 and not m_bFinished Then NotCallFinish
\r
32 On Error GoTo 0 : If en <> 0 Then Err.Raise en,,ed
\r
39 Stop : WScript.Echo "[ERROR] not call Finish"
\r
43 Sub ErrorCheckInTerminate()
\r
44 If Err.Number <> 0 Then
\r
45 Stop : WScript.Echo "ERROR(" & Err.Number & ") " & Err.Description & _
\r
46 " in Class_Terminate"
\r
52 Dim m : Set m = new ClassA
\r
54 If g_ErrEmulate and F_ErrInCaller Then WScript.Echo "ERROR!" : Err.Raise 1,,"in Caller"
\r
56 If ( g_ErrEmulate and F_NotCallFinish ) = 0 Then m.Finish
\r
57 WScript.Echo "After Finish"
\r
65 For g_ErrEmulate = 0 To 31
\r
67 If g_ErrEmulate and F_ErrInCaller Then s = s + "ErrInCaller, "
\r
68 If g_ErrEmulate and F_ErrInFinish Then s = s + "ErrInFinish, "
\r
69 If g_ErrEmulate and F_ErrInCancel Then s = s + "ErrInCancel, "
\r
70 If g_ErrEmulate and F_ErrInRelease Then s = s + "ErrInRelease, "
\r
71 If g_ErrEmulate and F_NotCallFinish Then s = s + "NotCallFinish, "
\r
72 WScript.Echo "-----------------"
\r
75 On Error Resume Next
\r
77 en = Err.Number : ed = Err.Description : On Error GoTo 0
\r
78 If en <> 0 Then WScript.Echo "ERROR(" & en & ") " & ed
\r