eigene Exception

Claudia92

Mitglied
Hallo!
Bis jetzt habe ich immer nur die bereits in Java vordefinierten Exceptions verwendet, aber nun will (oder soll) ich eine eigene schreiben.

Angenommen ich habe irgendeine Datenstruktur, zB eine Queue, die nur eine begrenzte Anzahl an Elementen aufnehmen kann. Wenn die Queue bereits voll ist, soll eine Exception ausgelöst werden.

Java:
[in der Klasse Queue]
    public T dequeue() throws EmptyQueueException {
    	if (isEmpty())	throw new EmptyQueueException();
    	... 
    }

Dann habe ich die Exception als eigene Klasse:
Java:
public class EmptyQueueException extends Exception {

}

Aber was gehört nun sinnvollerweise in so eine Exception-Klasse?
Und wieso schlägt mir Eclipse vor, eine serialVersionUID-Variable zu deklarieren?
 

Marco13

Top Contributor
Nicht viel. Eigentlich nur ein ein paar Konstruktoren:
EmptyQueueException(String message, Throwable cause)
EmptyQueueException(String message)
EmptyQueueException()
die die entsprechenden super-Konstruktoren aufrufen, und die serial ID damit das ganze richtig serializable ist (braucht man selten, ist in diesem Fall eher "Formsache")
 

Claudia92

Mitglied
Okay, danke!

Meine Klasse sieht nun so aus:
Java:
public class EmptyQueueException extends Exception {
	private static final long serialVersionUID = 1L;

	public EmptyQueueException(String message, Throwable cause) {
		super(message, cause);
	}
	
	public EmptyQueueException(String message) {
		super(message);
	}
	
	public EmptyQueueException() {
		super();
	}
}

Noch eine Frage zur Verwendung: message ist mir klar, aber was hat es mit
Code:
Throwable cause
auf sich?
 

Marco13

Top Contributor
In diesem Konkreten Fall bräuchte man das vielleicht nicht unbedingt, aber mit sowas kann man Exceptions "verketten". Angenommen man will eine "CouldNotReadDataException" werfen, wenn irgendein Datensatz nicht gelesen werden kann. In der konkreten Implementierung könnte die verursacht werden, weil
1. man aus einer Datei lesen wollte, und eine FileNotFoundException flog
2. man aus einer SQL-Datenbank lesen wollte, und eine SQLException flog
Diesen unterschied sollte man aber NICHT dort sehen, wo die "CouldNotReadDataException" fliegt. Dann könnte man sowas machen wie
Java:
class FileDataReader implements DataReader
{
    public Data readData() throws CouldNotReadDataException
    {
        try 
        {
            File file = new File(name);
            ....
        }
        catch (FileNotFoundException e)
        {
            // "cause" ist hier die FileNotFoundException
            throw new CouldNotReadDataException("Bla", e);
        }
    }
}
vs.
Java:
class DatabaseDataReader implements DataReader
{
    public Data readData() throws CouldNotReadDataException
    {
        try 
        {
            SQLDataBase dataBase = new SQLDataBase(....);
            ....
        }
        catch (SQLException e)
        {
            // "cause" ist hier die SQLException 
            throw new CouldNotReadDataException("Bla", e);
        }
    }
}
D.h. derjenige, der die CouldNotReadDataException bekommt, kann dann am StackTrace noch die eigentliche, tiefer liegende Ursache erkennen.

Wie gesagt, vielleicht ist das hier nicht so wichtig. Eigentlich bräuchte man auch den no-Args-Konstruktor nicht unbedingt - ich hasse :mad: zumindest Exceptions ohne genaue Fehlerbeschreibung. D.h. für die Lösung der Aufgabe sollte der zweite Konstruktor reichen, aber um die allgemeine Frage "Wie an eine eigene Exception-Klasse macht" angebracht zu beantworten, sollte man zumindest das chaining mit der 'cause' erwähnen.
 

MZ3291

Aktives Mitglied
Wenn du eine Exception fängst (Beispiel IOException) kannst du stattdessen deine eigene Exception weiter geben (zB emptyQueue) und dann in der Message genau definieren was schief gegangen is etc ..

siehe folgendes Beispiel

Java:
public void eineWichtigeMethode( .. parameter.. ) throws SpecificException{
try{
// hier passiert was furchtabr spannendes dass eine IOException auslöst
}catch(IOException e){
throw new SpecificException("Ein Fehler ist aufgetreten .. ", e);
}
}

Statt der IO gibst du eine eigene weiter, die besser veranschaulicht, was schief gegangen ist. Cause ist dann die eigentliche Exception, die die eigene dann ausgelöst hat.

---
EDIT: So ein dreck da war ich zu langsam, Marco13 s Erklärung ist auch viel besser ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
S Eigene Exception Klasse - fehlender Konstruktor mit String Java Basics - Anfänger-Themen 3
K Klassen Eigene Exception verwenden Java Basics - Anfänger-Themen 9
S Eigene Exception Schreiben und Welche Auslösen wie ? Java Basics - Anfänger-Themen 7
T eigene Exception Klasse Java Basics - Anfänger-Themen 12
B eigene Exception.... Java Basics - Anfänger-Themen 5
F Eigene Exception StackTrace und Message ist leer warum??? Java Basics - Anfänger-Themen 3
R Eigene Exception deklarieren Java Basics - Anfänger-Themen 3
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
T Datentypen Eigene Datentypen Java Basics - Anfänger-Themen 15
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
D Attribut Telefonnummer - eigene Klasse oder String Java Basics - Anfänger-Themen 13
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
S Eigene LinkedList Klasse Java Basics - Anfänger-Themen 4
I Eigene Java Tools Nutzung Java Basics - Anfänger-Themen 6
G eigene Bibliothek einbinden Java Basics - Anfänger-Themen 1
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
O Erste Schritte Eigene charAt(i) Methode schreiben Java Basics - Anfänger-Themen 10
D Methoden Eigene Methode um alle Ausgaben aufzurufen Java Basics - Anfänger-Themen 17
P Maven und eigene Jars Java Basics - Anfänger-Themen 4
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
A Eigene Methoden entwicken Java Basics - Anfänger-Themen 3
H GSON-Bibliothek für eigene Programme benutzen Java Basics - Anfänger-Themen 2
H Klassen auf eigene Klasse zugreifen Java Basics - Anfänger-Themen 2
N Eclipse - eigene Icons unter ClassPath Resource Java Basics - Anfänger-Themen 0
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
R eigene Graphikbedienelemente Java Basics - Anfänger-Themen 8
V Generics / eigene Liste Java Basics - Anfänger-Themen 4
T Eigene Bedingung in IF-Bedingung Java Basics - Anfänger-Themen 22
P Java 8 & Eigene Applets Java Basics - Anfänger-Themen 3
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
G eigene Bibliothek in Java importieren Java Basics - Anfänger-Themen 5
D Klassen Eigene Klasse für ArrayList Java Basics - Anfänger-Themen 6
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
J Eigene Klasse für die Variablen? Java Basics - Anfänger-Themen 3
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
T Muss ein Parametertest immer eine eigene Testklasse sein? Java Basics - Anfänger-Themen 3
B Multithreading und eigene Queue entwickeln Java Basics - Anfänger-Themen 3
O GUI: Eigene Fenster "Form"? Java Basics - Anfänger-Themen 13
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
O Denkanstöße für eigene Konfigurations-Datei Java Basics - Anfänger-Themen 12
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
M externe JARs in die eigene JAR einbinden Java Basics - Anfänger-Themen 9
V Klassen import - einfaches Umleiten auf eigene Klassen? Java Basics - Anfänger-Themen 8
B eigene klasse in listen eintragen Java Basics - Anfänger-Themen 6
A Objekte in eigene Klasse auslagern Java Basics - Anfänger-Themen 2
S [JavaFX 2.1] - Eigene Sprachauswahl? Java Basics - Anfänger-Themen 4
J eigene packages bzw klassen verwenden Java Basics - Anfänger-Themen 25
E Eigene Stackklasse Java Basics - Anfänger-Themen 7
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
P eigene kleine Datenverwaltung Java Basics - Anfänger-Themen 5
N Eigene Methoden-> Werte übergeben Java Basics - Anfänger-Themen 5
U Klassen Eigene Klassen importieren Java Basics - Anfänger-Themen 13
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E Object in eigene Klasse umwandeln? Java Basics - Anfänger-Themen 7
S Eigene Klassen addieren Java Basics - Anfänger-Themen 3
B OOP Eigene Objekte in Arrays zusammenfassen Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
G Eigene MessageBox kreieren Java Basics - Anfänger-Themen 9
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
F Klassen Eigene Klasse definieren Java Basics - Anfänger-Themen 4
S Eigene KeyEvent-Mask erstellen Java Basics - Anfänger-Themen 4
X Eigene Libary Java Basics - Anfänger-Themen 2
Crashbreaker Eigene Java-Programm ohne hilfe des CMD starten Java Basics - Anfänger-Themen 11
A Klassen Eigene Datenklasse - Strings mit fixer Länge Java Basics - Anfänger-Themen 2
G Shape um eigene Achse drehen Java Basics - Anfänger-Themen 2
P Vererbung Basisklasse soll eigene Methode benutzen Java Basics - Anfänger-Themen 38
F Eigene Klasse für die Keys von HashMap Java Basics - Anfänger-Themen 5
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
G Eigene Klasse als Array, zugriff? Java Basics - Anfänger-Themen 2
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
D Eigene equals methode schreiben Java Basics - Anfänger-Themen 4
dataframe OOP Eigene typisierte Liste Java Basics - Anfänger-Themen 3
W GUI als eigene Klasse oder in die Startklasse? Java Basics - Anfänger-Themen 21
T Konstruktor für eigene Klasse erstellen Java Basics - Anfänger-Themen 6
H Buttonbefehle in eigene Klasse schreiben Java Basics - Anfänger-Themen 8
M Datentypen Eigene iterierbare Liste Java Basics - Anfänger-Themen 4
G Eigene Klasse für externe Befehle - Warten auf Prozesse Java Basics - Anfänger-Themen 6
S Klassendiagramm - nur eigene Klassen? Java Basics - Anfänger-Themen 3
nrg Eigene simple List-Klasse programmieren Java Basics - Anfänger-Themen 3
C Eigene Interpreter-Programmiersprache mit Java Java Basics - Anfänger-Themen 17
N Java Programm soll Datei in eigene jar schreiben Java Basics - Anfänger-Themen 13
M Eigene Pakete in Eclipse erstellen Java Basics - Anfänger-Themen 5
M Eigene Hash Funktion Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
H eigene Schriftarten registrieren Java Basics - Anfänger-Themen 5
Kasoki Eigene Funktionen / Commands Java Basics - Anfänger-Themen 14
M Eigene LinkedList und Nodes Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben