короче, мы тут с
dobozy пообщались и пришли к выводу, что:
1) метки в execute в виде (ниже) не будут работать
Код:
exec_str = |
on error goto label1
...
|
execute(exec_str)
2) обработчик вызывающего execute кода, если есть, успешно справляется с обработкой ошибок в execute, но имеет несколько странный вид
а именно, обработчик такого вида
Код:
Messagebox Error & " (" & Cstr(Erl) & ")"
выдаст
$EXECUTE$+11: Division by zero (28)
где, 28 - строка соотв. вызову execute, $EXECUTE$+11 - место в коде, который передан в execute
3) для того, чтобы корректно создать обработчик, если все-таки понадобиться свой, в execut'e, необходимо описать в коде execute процедуру, в которой будет обработчик, а потом ее же вызвать
Код:
Sub Initialize
On Error Goto errh
Dim execStr As String
execStr = |
sub TestSub()
on error goto errh
dim i as Integer
dim r as Double
i = i + 5
r = i/0
eos:
Exit Sub
errh:
Messagebox Error & " (" & Cstr(Erl) & ")"
Resume eos
end sub
call TestSub()
|
Execute(execStr)
eos:
Exit Sub
errh:
Messagebox Error & " (" & Cstr(Erl) & ")"
Resume eos
End Sub
dobozy, поправь меня, если в чем-то твои мысли не сошлись )))