# Eigene Exception Klasse



## pisco (26. Sep 2012)

Hey Leute,

also ich schreibe gerade eine DB Applikation und möchte eigene Exceptions werfen:

Hier mal meine Klasse:



```
public class ProduktException extends Exception {
	
	public ProduktException(){
		//null
	}
	
	public void ProduktNotCreatedException(){
		System.out.println("Das Produkt konnte nicht erstellt werden!");
	}

}
```

Nun stellt sich mir die Frage, wie kann ich diese Exception aufrufen? 

also 
	
	
	
	





```
try {...

} catch (ProduktNotCreatedException e) {
e.showMessage();
}
```

freu mich über jede Hilfe!!!


----------



## ARadauer (26. Sep 2012)

mit throw new ProduktException(); kann eine exception geworfen werden



> public void ProduktNotCreatedException()


ist das eine methode?, klein schreiben... sollten eher verben sein... ist das ein konstruktor?

wär es so nicht besser


```
public class ProduktException extends Exception {
	
	public ProduktException(){
		super("Das Produkt konnte nicht erstellt werden!");
	}
}
```


----------



## pisco (26. Sep 2012)

ARadauer hat gesagt.:


> mit throw new ProduktException(); kann eine exception geworfen werden
> 
> 
> ist das eine methode?, klein schreiben... sollten eher verben sein... ist das ein konstruktor?



ist eine Methode


----------



## SlaterB (26. Sep 2012)

> } catch (ProduktNotCreatedException e) {

geht nicht, solange es kleine entsprechende Klasse gibt

> ist eine Methode

schreib das doch nicht nur so, noch mit Smily, sondern erkläre gleich den fragwürdigen Sinn,
wozu hast du diese Methode geschrieben, welcher Sinn ist dafür eingeplant?


----------



## pisco (26. Sep 2012)

kk!!

also der Sinn dahinter ist:

Ich möchte mir eine Klasse schreiben in der ich meine ProduktNotFound, -Created, -DeletedException Methoden drin hab.

Die sollen mir dann einfach eine Message ausgeben, wie zBsp.: ProduktNotFoundException ..."message"

In einige tutorials hab ich gefunden das die das mit:

```
class MyException extends Exception
{
    // Konstruktor unserer eigenen Exception
    MyException()
    {
        // Aufruf des übergeordneten Konstruktors mit dem zu
        // erscheinenden Fehlertext
        super("Ein Fehler ist aufgetreten");
    }
}
```

jedoch ,so glaub ich kann ich nur EINE Exception über den Konstruktor werfen.

Daher meine Frage:

Wie definier ich mir so eine Exception Klasse?
Werfen kann ich sie dann ganz normal oder?(try{...}catch(Exception e){...})


dank euch schonmal für eure Hilfe!


----------



## SlaterB (26. Sep 2012)

mit try/catch FÄNGST du eine Exception, GEWORFEN wird sie mit throws,

du kannst entweder eine neue Unterklasse erstellen, 
"public class ProduktNotCreatedException extends ProduktException"

oder du kannst dir eine bestimmte ProduktException erstellen, per Factory, im einfachen Fall eine statische Methode:

```
public static void throwProduktNotCreatedException() throws ProduktException {
   throw new ProduktException("bestimmter Text");
}

passender Konstruktor in ProduktException noch benötigt
```
wenn du nicht throws ... an alle Methoden ranschreiben willst, dann erbe von RuntimeException, 
das ist unsichtbar und allgemein geeigneter


----------



## pisco (26. Sep 2012)

```
public static void throwProduktNotCreatedException() throws ProduktException {
   throw new ProduktException("bestimmter Text");
}

passender Konstruktor in ProduktException noch benötigt
```


Vielen dank!!!

Was ich grad nicht versteh is, was du mit *"passender Konstruktor in ProduktException noch benötigt"* meinst? Kannst du das vll noch ein bisschen erklären oder ein Beispiel geben?


----------



## pisco (26. Sep 2012)

ok hat sich erledigt DANKE auf jeden Fall!!!


----------

