[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Error Reporting
A function called METHODNAME() is provided. It is similar in behavior to,
and can be used instead of, Clipper's PROCNAME(). It is intended to
provide more informative error traces. The following old-style error trace
was obtained with MENUDEMO.EXE:
Called from: obj:EXEC(71)
Called from: obj:EXEC(73)
Called from: obj:EXEC(53)
Called from: obj:EXEC(72)
Called from: obj:EXEC(73)
Called from: obj:EXEC(53)
Called from: obj:EXEC(72)
Called from: MAIN(49)
By using METHODNAME() in ERRORSYS, you can get the following more
informative listing:
Called from: POPUPMENU():EXEC(71)
Called from: POPUPMENU:EXEC(73)
Called from: MENUITEM:EXEC(53)
Called from: PULLDNMENU/POPUPMENU():EXEC(72)
Called from: PULLDNMENU/POPUPMENU:EXEC(73)
Called from: MENUITEM:EXEC(53)
Called from: MENUBAR/BASEMENU:EXEC(72)
Called from: MAIN(49)
A file called CYERRSYS.OBJ is provided with Class(y) to implement this. It
is a recompiled version of a very slightly modified ERRORSYS.PRG. It can
be linked in along with the other object files in an application,
automatically resulting in the enhanced error trace.
If you have your own modified version of ERRORSYS, all you need to do is
change one line to obtain the enhanced error trace. In the original
ERRORSYS, there is a line similar to the following (usually line 131):
? "Called from", Trim(ProcName(i)) + ;
Merely change the PROCNAME(i) call to METHODNAME(i), as follows:
? "Called from", Trim(MethodName(i)) + ;
Recompile the module. Link this module with your system to obtain the
enhanced error trace.
The general format of the string returned by METHODNAME() is as follows:
<recvClass>[/<implClass>][()]:<message>[(*)]
<recvClass> Class of the object receiving the message
<implClass> Class in which the method is implemented. This will be
omitted if it is the same as the receiver's class. When present,
it will always be an ancestor class of the receiver.
() an up-arrow is included if the method concerned is actually
implemented in a class higher up the inheritance tree than the
one displayed. This can occur when the super message, or an
explicit class name message, is used to override the normal
behavior of a message search.
(*) an asterisk appears after the message name if the message could
not be found in the class. This means one of two things:
. The message name was not the same as the method name; i.e.,
it was declared with the MESSAGE...METHOD command.
. The message does not exist.
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson