>>DEFINE CLASS ClassBase as Session >> >> DIMENSION aErrorInfo[1] && Array of error info >> bErrorOccurred = .F. && Set to True when an error occurs >> >> ** This method will be protected in subclasses >> PROCEDURE _HandleError() >> >> WITH This >> >> ** Save the error info to the error array property >> =AERROR(.aErrorInfo) >> >> ** Turn on the error flag >> .bErrorOccurred = .T. >> >> ENDWITH >> >> ENDPROC >> >> >> ** This method will be protected in subclasses >> PROCEDURE _ResetErrState() >> >> WITH This >> >> ** Reset the error array >> DIMENSION .aErrorInfo[1] >> .aErrorInfo = "" >> >> ** Turn off the error flag >> .bErrorOccurred = .F. >> >> ENDWITH >> >> ENDPROC >> >> >> >>ENDDEFINE >> >> >>*** Base class. All PEM's will be hidden in child classes >>DEFINE CLASS Child AS ClassBase >> >> ** Use the scope resolution operator to call base class >> ** methods that were protected in this class >> >> PROTECTED PROCEDURE _HandleError() >>** ClassBase::_HandleError() >> DODEFAULT() >> ENDPROC >> >> PROTECTED PROCEDURE _ResetErrState() >> ClassBase::_ResetErrState() >> ENDPROC >> >> PROCEDURE MyProc() AS Boolean >> This._ResetErrState() >> This._HandleError() >> ENDPROC >> >>ENDDEFINE >>