Wenn in einer Programmanweisung wie dem Funktionsaufruf Double.parseDouble(...) ein Problem auftritt, auf Grund dessen der vorgesehene Ablauf nicht fortgesetzt werden kann oder sollte, dann nennen wir dieses Problem eine Ausnahme (exception) oder einen Fehler (error). Als Fehler wird eine schwerwiegende Ausnahme bezeichnet, bei der das Programm nicht fortgesetzt werden kann.

Tritt eine solche Ausnahme auf, sollte unser Programm diese auffangen, damit dies nicht das Java-Laufzeitsystem tun muss. Wir können nämlich eine angemessene an unser Programm angepasste Behandlung einer Ausnahme programmieren.

Zu diesem Zweck verwenden wir in Java eine Sprachstruktur wie

Versuche folgendes:
 ... // Hier stehen zumeist mehrere Anweisungen.
Wenn es schief geht, fange das Problem (die Ausnahme) auf
und behandle es.

In Java sieht das so aus:

try
{
 ... // Anweisungen im try-Block
}
catch(Ausnahmetyp Ausnahmevariable)
{
 ... // Ausnahmebehandlung im catch-Block
}

Zu einer try-Anweisung gehört immer mindestens eine catch -Anweisung. Sobald in einer der Anweisungen des try-Blocks eine Ausnahme auftritt, wird dieser try-Block sofort verlassen. Fängt eine catch-Anweisung die aufgetretene Ausnahme auf, wird das Programm im entsprechenden catch-Block fortgeführt. Andernfalls meldet das Java-Laufzeitsystem die aufgetretene Ausnahme.

Wenn wir jede mögliche Ausnahme auffangen wollen, geben wir als Ausnahmetyp java.lang.Exception oder kurz Exception an. Dieser Typ umfasst alle möglichen Ausnahmen.

Nun kann das Additionsprogramm durch die folgende einfache Ausnahmebehandlung erweitert werden.

public class addx
{
 public static void main(String[] args)
 {
  try // Versuche, die folgenden Anweisungen auszuführen.
  {
   double a = Double.parseDouble(args[0]);
   double b = Double.parseDouble(args[1]);
   double Summe = a + b;
   System.out.println(a + " + " + b + " = " + Summe);
  }
  catch(Exception e) // Fange gegebenenfalls eine Ausnahme auf
  { // ... und melde sie.
   System.err.println("Es ist eine Ausnahme aufgetreten.");
  }
 }
}

Hier wird bei der Ausgabemeldung zur Ausnahme statt System.out.println() System.err.println() verwendet. Während System.out das Standard-Ausgabegerät darstellt, ist System.err das Standard-Fehlermeldegerät. Eine Ausgabe an System.err kann nicht umgelenkt werden.