Hallo zusammen,
mir ist gerade etwas aufgefallen, was ich einfach nicht verstehe. Bis jetzt bin ich davon ausgegangen, dass es zwei Möglichkeiten zur Ausnahmebehandlung gibt:
1.: man packt die kritische Stelle, die eine Ausnahme auslösen kann DIREKT in einen try und catch-Block --> Ausnahmebehandlung erledigt.
2.:man schreibt an den jeweiligen Funktionskopf "throws XException", wobei dies nur ein WEITERLEITEN der Exception ist, welche später irgendwann trotzdem von einem try und catch-Block gefangen werden muss.
Jetzt habe ich aber grad gesehen, dass ich eine Exception per throws weiterleiten kann OHNE sie später per try und catch aufzufangen.
Die Klasse um die es sich handelt ist folgende (Großschreib-Document):
Zunächst hatte ich den super-Aufruf von insertString in try und catch gesetzt, das ergab für mich Sinn. Anschließend hab ich den try und catch-Block entfernt und das Throws an den Funktionskopf angehangen. Ich habe jetzt in der Klasse welche eine Instanz des FieldDocuments erzeugt keinen try und catch block..sprich die Exception wird nur weitergeleitet, aber nirgendwo aufgefangen..und trotzdem krieg ich keine Fehlermeldung.
Kann mir das jemand erklären bitte? Ich bin bis jetzt wie gesagt davon ausgegangen, dass "throws" nur zum weiterleiten von Exceptions da ist und dass JEDE Exception früher oder später per try-catch gefangen werden muss.
Vielen Dank!
mir ist gerade etwas aufgefallen, was ich einfach nicht verstehe. Bis jetzt bin ich davon ausgegangen, dass es zwei Möglichkeiten zur Ausnahmebehandlung gibt:
1.: man packt die kritische Stelle, die eine Ausnahme auslösen kann DIREKT in einen try und catch-Block --> Ausnahmebehandlung erledigt.
2.:man schreibt an den jeweiligen Funktionskopf "throws XException", wobei dies nur ein WEITERLEITEN der Exception ist, welche später irgendwann trotzdem von einem try und catch-Block gefangen werden muss.
Jetzt habe ich aber grad gesehen, dass ich eine Exception per throws weiterleiten kann OHNE sie später per try und catch aufzufangen.
Die Klasse um die es sich handelt ist folgende (Großschreib-Document):
Java:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class FieldDocument extends PlainDocument
{
public void insertString(int off, String s, AttributeSet a) throws BadLocationException
{
super.insertString(off, s.toUpperCase(), null);
}
}
Zunächst hatte ich den super-Aufruf von insertString in try und catch gesetzt, das ergab für mich Sinn. Anschließend hab ich den try und catch-Block entfernt und das Throws an den Funktionskopf angehangen. Ich habe jetzt in der Klasse welche eine Instanz des FieldDocuments erzeugt keinen try und catch block..sprich die Exception wird nur weitergeleitet, aber nirgendwo aufgefangen..und trotzdem krieg ich keine Fehlermeldung.
Kann mir das jemand erklären bitte? Ich bin bis jetzt wie gesagt davon ausgegangen, dass "throws" nur zum weiterleiten von Exceptions da ist und dass JEDE Exception früher oder später per try-catch gefangen werden muss.
Vielen Dank!