про деструктор
в LS он называется Delete
в нём можно делать различные действия, НО... он вызывается при уничтожении объекта, а оно происходит и в случае ошибок кода (тот самый Error)
"неприятность" в том, что мы там исключения часто не ждём, а оно запросто "проходит мимо"
т.е. исключение произошло где-то в коде, но не в деструкторе, а мы должны на это среагировать, дабы место (Errl) и текст не потерять
если это не отработать и вызвать далее действия с обработчиками ошибки - получим что-то невнятное типа "обращение к неинициализированому динамическому массиву" по месту - "хз где"
вариант обработки
в LS он называется Delete
в нём можно делать различные действия, НО... он вызывается при уничтожении объекта, а оно происходит и в случае ошибок кода (тот самый Error)
"неприятность" в том, что мы там исключения часто не ждём, а оно запросто "проходит мимо"
т.е. исключение произошло где-то в коде, но не в деструкторе, а мы должны на это среагировать, дабы место (Errl) и текст не потерять
если это не отработать и вызвать далее действия с обработчиками ошибки - получим что-то невнятное типа "обращение к неинициализированому динамическому массиву" по месту - "хз где"
вариант обработки
Visual Basic:
Sub Terminate
Description: destroy object
%END REM
Sub Delete()
Dim routineName As String
routineName="Delete"
On Error GoTo ErrH
'your code here
'try to save document have been marked for save
Print {Class:} TypeName(Me) {-> Destructor}
Dim err_ As Integer
err_=Err
If err_>0 Then
'что-то пошло не так и обработку в объекте надо сворачивать
Else
'всё норм мы идем дальше
If me.AutoSave Then Me.Save
End If
Quit:
Exit Sub
ErrH:
Error Err, Me.RaiseError
End Sub
Последнее редактирование: