# Exception abfangen



## Spin (17. Okt 2009)

```
System.err.println("Fehler");

//oder:

throw new IllegalArgumentException( "Fehler");
```

Ich wollte mal fragen , wie man in einem Projekt Fehler abfängt.?
Ich mache es immer mit try und catch und lasse mir die Fehler auf die Konsole ausgeben.

Wenn  ich nun mit throw den Fehler weitergebe:  o geht der hin?
Er färbt mir dann die Konsole komplett rot.

..kann wer helfen?

:rtfm:


----------



## oversoul (17. Okt 2009)

Guten Abend,
im Try-Block soll der Code rein, der Fehler auslösen könnte, zB. beim Lesen einer Datei

Sollte ein Fehler ausgelöst werden, wird der passende catch-Block ausgeführt und somit der Fehler behandelt

Beispiel:


```
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;


public class FileOpen {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		FileReader reader = null;
		while(reader == null){
			try{
				System.out.print("Datei namen eingeben: ");
				String filename = input.nextLine();
				reader = new FileReader(filename);
			}catch(FileNotFoundException e)
			{
				System.out.println("Datei nicht gefunden");
			}
		}
			/*
			 * Hier dann irgendwas mit dem Inhalt machen
			 */
			
			try {
				reader.close();
			} catch (IOException e) {
				System.err.println("Fehler beim schließen der Datei!");
				System.exit(1);
			}
			
			System.exit(0);
		
	}
}
```

In diesem Beispiel wird der Fehler dadurch abgefangen, dass wenn die Datei nicht gefunden wurde nochmal der Dateiname eingegeben werden muss, bis die Datei gedunden wurde


----------



## rhirt (17. Okt 2009)

Achte auch auf throws und throw:

throws wird verwendet um zB. das Abfangen einer Exception beim Aufrufen einer Methode zu erzwingen:


```
public void machWas() throws IchKannDasNichtException {
    ...
}
```

Mit throw wird eine bestimte Exception ausgelöst:


```
if(betrag == 0){
   throw new KontoIstLeerException();
}
```


----------



## rhirt (17. Okt 2009)

Beachte auch den Unterschied zu Fehler (Error, zB. StackOverflowError) und Ausnahmen (Exception, zB. NullPointerException).

liebe Grüsse


----------

