Main.prg
Do Form form1
Do Form form2
Do form formN
Read Events
Errhandle.prg
lparameters tnerror, tcMessage, tcProg, tnLineNo
Local lcError
TEXT to m.lcError textmerge noshow
Error No: << m.tnerror >>. Message: << m.tcMessage >>
Source: << m.tcProg >> at line << m.tnLineNo >>
ENDTEXT
Messagebox(m.lcError, 0+4096, "Error", 5000)
Метод формы, где ожидается ошибка:
Local loForm
loForm = thisform
On Error ;
return ErrHandle(Error( ), Message( ), Program( ), Lineno( )) ;
and m.loForm.Release()
local lc
lc = "Hello"
If m.lc = 1 && explicit error
EndIf
_screen.Caption = "This code wouldn't run"
On Error
Примечание: это своего рода использование блоков try ... catch. Лично я не использую try ... catch, потому что, в отличие от ошибок, он не перехватывает все ошибки.