View Full Version : Mehr Infos zu Fehler innerhalb MONITOR
Hallo zusammen,
gibt es eine Möglichkeit im Fehlerfall im ON-ERROR Zweig eines MONITOR-Blockes an die Zeile ranzukommen, wo der eigentliche Fehler auftrat? Evtl. noch an sonstige Informationen, die die Fehlersuche vereinfachen würden.
Vielen Dank im voraus.
andreaspr@aon.at
28-06-12, 08:37
Hallo,
Scott Klement hat ein paar nette Beispiele auf seiner Seite
Error handling (http://www.scottklement.com/rpg/ifs_ebook/errors.html)
Du kannst auch alternativ APIs zum einlesen der letzten Job-Log Einträge verwenden.
lg Andreas
RobertMack
28-06-12, 08:54
SDS 11-15 5,0 zoned dec
Liste der Codes: http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fbooks_web%2Fc092508690.htm
Logic IT-Services
28-06-12, 09:55
Zufälligerweise gerade diese Woche in meinem Mailkasten gelandet...
Möglicherweise ist's aber zuviel vom Guten.
PowerUp: RPG Exception Handling (http://ibmsystemsmag.blogs.com/powerup/2012/03/rpg-exception-handling.html)
und dazu das entsprechende Redbook
IBM Redbooks | RPG: Exception and Error Handling (http://www.redbooks.ibm.com/abstracts/redp4321.html)
Danke erstmal für die schnelle Antwort.
Mit der Datenstruktur hatte ich schon mal rumgespielt. Leider ist die Zeilen-Nr. hier die 'oberste' sub procedure des Aufrufstacks, aber halt nicht diejenige 'sub procedure' die den Fehler eigentlich verursachte.
In meinem Fall umschließt der MONITOR-Block meine gesamte Programmlogik, damit Fehler auf keinen Fall zu einem Absturz des Programms führen können. Sieht so aus:
MONITOR
main()
ON-ERROR
-> Fehlerhandling
ENDMON
In Java kann man sich im Fehlerfall den Stracktrace ausgeben lassen. Also die Aufrufhierachie von der obersten bis zur tiefsten Stufe. Das erleichtert die Fehlersuche ungemein.
Den Stack kannst du dir auch auf der AS/400 auslesen, aber eine Zeilen-Nr. gibts dazu nicht, außerdem bekommst du nur den aktuellen Stack.
Java ist auch eine andere Welt, da wird der Stack in der Exception automatisch bereitgestellt.
Um die Zeilen-Nr. auszulesen musst du dann halt die Nachricht aus dem Joblog lesen.
Da die Nachricht ja an deine Monitor-Gruppe gesendet wurde kannst du auch die letzte(n) Nachricht(n) deiner aktuellen Aufrufebene abrufen:
Receive Program Message (QMHRCVPM) API (http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/apis/QMHRCVPM.htm)
In den Nachrichtendaten findest du dann alles was du brauchst.