Package netlib.slatec

Class Xermsg

java.lang.Object
netlib.slatec.Xermsg

public class Xermsg
extends java.lang.Object
Java-Adaption der SLATEC-Fehlerbehandlung.

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'.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • printToStdErr

      public static boolean printToStdErr
      Whether 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.SlatecException
      See documentation in file 'xermsg.f'.
      Parameters:
      LIBRAR -
      SUBROU -
      MESSG -
      NERR -
      LEVEL -
      Throws:
      Xermsg.SlatecException - iff LEVEL == 1 or 2.