kramann.info
© Guido Kramann

Login: Passwort:










7.1 Behandlung von Ausnahmen (Exceptions) in Java

7.1 Handling Exceptions in Java (EN google-translate)

7.1 Obsługa wyjątków w Javie (PL google-translate)

Einerseits können beim Programmieren logische Fehler (fault) gemacht werden, die zu einer nicht korrekten Ausführung eines Programms führen (error) und dies wiederum kann zum Versagen eines Programms (failure / nicht einhalten der Spezifikation) führen.

On the one hand, logical errors (fault) can be made while programming, which lead to a incorrect execution of a program (error) and this in turn can lead to Failure of a program (failure / failure to comply with the specification).

Z jednej strony błędy logiczne (błędy) można wprowadzić podczas programowania, co prowadzi do nieprawidłowe wykonanie programu (błąd), a to z kolei może prowadzić Niepowodzenie programu (awaria / nieprzestrzeganie specyfikacji).

Andererseits gibt es unsichere Operationen, die auch bei korrekter Programmierung zu errors und vielleicht sogar zu failures führen können. Dabei kann es sich um ganz alltägliche Dinge handeln:

On the other hand, there are unsafe operations, which even with correct programming too errors and maybe even failures. These can be everyday things:

Z drugiej strony istnieją niebezpieczne operacje, które nawet przy prawidłowym programowaniu błędy, a może nawet awarie. Mogą to być rzeczy codziennego użytku:

  • Das Laden einer Datei vom Filesystem: vielleicht exisitert die Datei nicht!
  • Das Abrufen Inhalten aus dem Internet: vielleicht läßt sich gerade keine Verbindung aufbauen.
  • Das Ziehen einer Wurzel: der Radikant könnte negativ sein.
  • Das Dividieren einer Zahl: der Divisor könnte Null sein.
  • Die Eingabe von Daten durch einen Benutzer: die Eingaben könnten falsch formatiert oder gar unsinnig sein.
  • Das Ausführen einer Berechnung innerhalb eines Echtzeitprozesses: die Berechnung könnte das spezifizierte Gewährleistungsintervall zeitlich überschreiten.

Im Sprachumfang von Java ist die Behandlung von Ausnahmen (Exceptions) enthalten. Manche sind bereits vordefiniert (Division-by-zero-exception, file-not-found-exception), andere kann man sich selber mittels Vererbung erstellen.

The language scope of Java includes the handling of exceptions. Some are already predefined (division-by-zero-exception, file-not-found-exception), others can be created by inheritance.

Zakres języka Java obejmuje obsługę wyjątków. Niektóre z nich są już wstępnie zdefiniowane (wyjątek dzielenia przez zero, wyjątek nie występuje w pliku), inne można utworzyć w drodze dziedziczenia.

Die unsichere Aktion wird in einen try-Block geschrieben und bei Auftreten eines Problems, kann diese Ausnahme in einem catch-Block behandelt werden. Hier ein Beispiel:

The unsafe action is written to a try block, and if a problem occurs, this exception can be handled in a catch block. Here's an example:

Niebezpieczna akcja jest zapisywana do bloku try, a jeśli wystąpi problem, ten wyjątek może być obsługiwany w bloku catch. Oto przykład:

int x=7;
int y=0;
int z;
try
{
    z=x/y;
}
catch(Exception e)
{
    println(e.toString());
}

Code 7.1-1: Auslösen einer Exception durch eine Division durch Null.

Als Beispiel für eine selbst programmierte Exception wird angenommen, dass das Stellsignal eines Aktuators nicht den Bereich ]-100,+100[ überschreiten darf. Um solche Überschreitungen zu bewerken, wird ein Text auf die Konsole gegeben, wenn sie auftreten (Processing-sketch,weitere Erläuterungen in der Vorlesung):

As an example of a self-programmed exception, it is assumed that the actuating signal of an actuator may not exceed the range] -100, 100 [. To make such transgressions, a text is given to the console when they occur (Processing-sketch, further explanations in the lecture):

Jako przykład samoczynnie zaprogramowanego wyjątku zakłada się, że sygnał uruchamiający siłownika nie może przekroczyć zakresu] -100, 100 [. Aby wprowadzić takie wykroczenia, tekst pojawia się na konsolę, gdy się pojawią (szkic procesu, dalsze wyjaśnienia w wykładzie):

import java.lang.RuntimeException; 

//Programmieren einer eigenen Exception

//Ein Stellsignal darf +/-100 N nicht überschreiten.
//Das Stellsignal wird aus der Regelabweichung mal 
//einer Verstärkung berechnet.

public void setup()
{
     Stellsignal stellsignal = new Stellsignal();
     
     try
     {
          stellsignal.berechnen(5.0);
     }
     catch(WertebereichException w)
     {
          println(w.toString());
     }
     
     try
     {
          stellsignal.berechnen(15.0);
     }
     catch(WertebereichException ww)
     {
          println(ww.toString());
     }
     
}

public void draw()
{
}

Code 7.1-2: Sketch "Exception"

public class Stellsignal
{
     double max = 100.0;
     double min = -100.0;
     double faktor = 10.0;
  
     public double berechnen(double regelabweichung) throws WertebereichException
     {
          double stellwert = faktor*regelabweichung;
          if(stellwert<=max && stellwert>=min)
          {
              println("Das Stellsignal beträgt: "+stellwert);
              return stellwert;
          }
          else
          {
              throw new WertebereichException();
          }
     }
}

Code 7.1-3: Tab "Stellsignal" im Sketch "Exception"

public class WertebereichException extends RuntimeException
{
     public WertebereichException() 
     {
          super("Überschreitung des Wertebereiches!");
     }     
}

Code 7.1-4: Tab "WertebereichException" im Sketch "Exception"

Processing-Sketch "Exception" (Beispiel oben).