---
title: 'Aufrufstack von Ausnahmen verändern'
url: 'https://www.tutego.de/blog/javainsel/2011/07/aufrufstack-von-ausnahmen-verndern'
markdown: 'https://www.tutego.de/blog/javainsel/2011/07/aufrufstack-von-ausnahmen-verndern.md'
date: '2011-07-15'
description: 'Wenn wir in einer Ausnahmebehandlung eine Exception e auffangen und genau diese dann mit throw e weiterleiten, müssen wir uns bewusst sein, dass die Ausnahme e auch den Aufrufstack weitergibt. Aus dem vorangehenden Beispiel: java.net.URISyntaxException: Malformed escape pair at index 7: http://% at…'
taxonomy:
  category:
    - Insel
---

# Aufrufstack von Ausnahmen verändern

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Aufrufstack von Ausnahmen verändern

15.07.2011 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Wenn wir in einer Ausnahmebehandlung eine `Exception` e auffangen und genau diese dann mit throw e weiterleiten, müssen wir uns bewusst sein, dass die Ausnahme e auch den Aufrufstack weitergibt. Aus dem vorangehenden Beispiel:

`java.net.URISyntaxException`: Malformed escape pair at index 7: http://%

**at `java.net.URI$Parser.fail`(`URI`.java:2827)**

at `java.net.URI$Parser.scanEscape`(`URI`.java:2957)

…

at `java.net.URI`.<init>(`URI`.java:595)

**at Rethrow.`createUriFromHost`(Rethrow.java:9)**

at Rethrow.main(Rethrow.java:24)

Die `main()`-Methode fängt den Fehler von `createUriFromHost()` ab, aber diese Methode steht nicht ganz oben im Aufrufstack. Die Ausnahme stammte ja gar nicht von `createUriFromHost()` selbst, sondern von `fail()`, sodass `fail()` oben steht. Ist das nicht gewünscht, kann es korrigiert werden, denn die Basisklasse für alle Ausnahmen `Throwable` bietet die Methode `fillInStackTrace()`, mit dem sich der Aufrufstack neu füllen lässt. Unsere bekannte Methode `createUriFromHost()` soll auf `fillInStackTrace()` zurückgreifen:

```java
public static URI createUriFromHost( String host ) throws URISyntaxException

{

try

{
```

return new `URI`( "http://" + host );

```java
}

catch ( URISyntaxException e )

{

System.err.println( "Hilfe! " + e.getMessage() );

e.fillInStackTrace();**

throw e;

}

}
```

Kommt es in `createUriFromHost()` zur `URISyntaxException`, so fängt unsere Methode diese ab. Ursprünglich ist in e in der Aufrufstack mit der `fail()`-Methode ganz oben gespeichert, allerdings löscht `fillInStackTrace()` zunächst den ganzen Stracktrace und füllt ihn neu mit dem Pfad, den der aktuelle `Thread` zu der der Methode führt, die `fillInStackTrace()` aufruft – das ist `createUriFromHost()`. Daher beginnt die Konsolenausgabe auch mit unserer Methode:

Hilfe! Malformed escape pair at index 7: http://%

`java.net.URISyntaxException`: Malformed escape pair at index 7: http://%

at **RethrowWithFillInStackTrace.`createUriFromHost`(RethrowWithFillInStackTrace.java:14)**

at RethrowWithFillInStackTrace.main(RethrowWithFillInStackTrace.java:24)

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

## 1 Kommentare

**Jadoth** · [18.07.2011 16:24](#comment-3632)

Darf ich mal anregen Fachbegriffe wie Exception nicht einzudeutschen. Es schreibt ja auch niemand "Zwischennetz" (Internet) oder "Zusammentrager" (Compiler) - Okay Compiler könnte deutsch auch "Übersetzer" sein (sagt auch niemand), aber das "Zusammentrager" war einfach zu lustig, um es nicht zu schreiben \\\*gg\\\*. Im Artikel steht dann eh wieder "Exception", aber gerade beim lesen des Titels denk ich mir bei eingedeutschten Fachbegriffen oft (weiß nicht wie es anderen geht) "Was will er denn jetzt? ... Achso!) Außerdem müsste es dann auch "Aufrufstapel" statt -stack heißen, usw. Wenn man das konsequent machen würde wüßte keiner mehr wovon die Rede ist bzw. nur mir sehr viel mehr gedanklichen Umwegen. Ist natürlich kein Drama, ist mir nur so aufgefallen. Nix für ungut :-)

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Gastbeitrag: SQL als "interne DSL" in Java mit jOOQ](https://www.tutego.de/blog/javainsel/2011/07/gastbeitrag-sql-als-interne-dsl-in-java-mit-jooq.md)
- Next: [Java 7 Unterstützung für Eclipse 3.7 (beta)](https://www.tutego.de/blog/javainsel/2011/07/java-7-untersttzung-fr-eclipse-3-7-beta.md)
