Class Xermsg
public class Xermsg
extends java.lang.Object
Die Funktionen der SLATEC-Bibliothek verwenden folgende Mechanismen zur Behandlung von Fehlern. Erstens wird von jeder Funktion neben ihrem eigentlichen Rückgabewert ein Referenzparameter 'IER' verwendet, der durch die aufgerufene Funktion gesetzt wird und nach dem Rücksprung durch den Aufrufer ausgewertet werden kann. Im Fehlerfall enthält IER einen Wert ungleich 0. Die Bedeutung der von 0 verschiedenen Fehlercodes kann der Dokumentation der jeweiligen Funktion entnommen werden.
Zweitens wird in SLATEC durchgehend die Funktion XERMSG zur Ausgabe von Fehlermeldungen verwendet. Sie gibt Meldungen sowohl in Textform als auch als Fehlercodes (NERR) aus. Außerdem wird ein Code 'LEVEL' benutzt, der die Art des Fehlers charakterisiert: -1 und 0 stehen für Warnungen, 1 für einen Fehler, der vom Aufrufer behandelt werden kann, 2 für einen schweren Fehler, der zum Abbruch des Programms führen sollte. Der Wert NERR entspricht i.d.R. dem von IER. Weitere Einzelheiten entnimmt man der Original-Dokumentation in 'xermsg.f'.
Die SLATEC-Fehlerbehandlung wurde folgendermaßen nach Java übertragen:
- Warnungen der Kategorien -1 und 0 werden als reine Meldung auf STDERR ausgegeben, wenn die globale Variable Xermsg.printToStdErr == true gesetzt ist. Sie werden ganz unterdrückt, wenn Xermsg.printToStdErr == false gilt. Standard ist Xermsg.printToStdErr == false. Unabhängig von der Meldung mit XERMSG kann der Fehlerstatus weiterhin über die Variable IER festgestellt werden.
- Für Fehler der Kategorien 1 und 2 wird beim Aufruf von XERMSG eine SlatecException geworfen. Diese enthält in Textform alle sonst von XERMSG ausgegebenen Informationen sowie als Instanzvariablen die Werte der an XERMSG übergebenen Parameter LIBRAR, SUBROU, MESSG, NERR und LEVEL. Die SlatecException kann dann vom Aufrufer gefangen und behandelt werden. Da beim Werfen der SlatecException der Programmfluss der ursprünglichen SLATEC-Implementierung unterbrochen wird, kann in diesem Fall nicht garantiert werden, dass auch der Wert von IER gesetzt wurde. Details des Fehlers können jedoch in jedem Fall aus den Instanzvariablen der SlatecException ersehen werden.
- Author:
- Stefan
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Xermsg.SlatecException
-
Field Summary
Fields Modifier and Type Field Description static boolean
printToStdErr
Whether to print warning messages (messages of levels -1 and 0) to stderr. -
Method Summary
Modifier and Type Method Description static void
xermsg(java.lang.String LIBRAR, java.lang.String SUBROU, java.lang.String MESSG, int NERR, int LEVEL)
See documentation in file 'xermsg.f'.
-
Field Details
-
printToStdErr
public static boolean printToStdErrWhether to print warning messages (messages of levels -1 and 0) to stderr. If false: suppress those messages. Note: Slatec functions will also report warnings in their IER return value.
-
-
Method Details
-
xermsg
public static void xermsg(java.lang.String LIBRAR, java.lang.String SUBROU, java.lang.String MESSG, int NERR, int LEVEL) throws Xermsg.SlatecExceptionSee documentation in file 'xermsg.f'.- Parameters:
LIBRAR
-SUBROU
-MESSG
-NERR
-LEVEL
-- Throws:
Xermsg.SlatecException
- iff LEVEL == 1 or 2.
-