# Exceptions ...



## matcho (21. Nov 2010)

Ich steh echt auf Kriegsfuß mit Java. Könnte mir vielleicht jemand auf die Sprünge helfen bei folgender Aufgabe:


```
public static int[] convertStr(String[] arc) {
		int[] temp = new int[scr.length];
		src[src.length -1] = null;
		int i = 0;
		while (i <= new Integer(src[0])) {
			System.out.println(src[i+1].length());
			i = i + 2;
		}
		return temp;
	}
```

*1. Nennen Sie 3 Ausnahmen, die diese Methode auslösen kann!*

*Geben Sie für jede der genannten Ausnahmen einen Wert für den Parameter der Methode an, bei dem die Ausnahme ausgelöst wird.*

*Ergänzen Sie die Methode so um Ausnahmebehandlungen, dass die unterschiedlichen Ausnahmen individuell behandelt werden können!*

zu 1.)

NumberFormatException

IOException
zu 2.)
hmm
zu 3.)
...

Ich wäre über etwas Hilfestellung äußerst dankbar :noe:


----------



## Onkel Hatti (21. Nov 2010)

Die Variable "src" ist nirgendwo deklariert, der Parameter für die Methode ist "arc". das gibt ne Exception. Welche?
Geh mal die Möglichkeiten durch. Ist es möglich, dass src.length = 0 ist? Was passiert dann und welche Exception wird geworfen? Wie fängt man sie ab?
Nervös werde ich, wenn auf berechnete oder feste Elemente eines Arrays in einer Schleife zugegriffen wird, in der obigen Methode z.B. bei "System.out.println(src[i+1].length())". Kann es passieren, das durch das i+1 auf Elemente zugegriffen werden soll, die gar nicht existieren? Wenn ja, welche Exception wird dann geworfen? Wie fängt man sie ab?

Hilft das auf die Sprünge?

 Hatti


----------



## matcho (21. Nov 2010)

1) NullpointerException in Zeile 2 und 3 (src.length)
2) ArrayIndexOutOfBoundsException in Zeile 5 und 6, da nicht geprüft wird, wie viele Werte in src      stehen
3) NumberFormatException in Zeile 5, da ein String nicht umbedingt in eine Zahl gecastet werden      kann

Werte zum Auslösen der Exception:
1) src == null
2) String[] src = {}; // leeres Array
3) src[0] == "bla"

wie ich nun die try catch einbringe, ist mir noch nicht ganz klar


----------



## Onkel Hatti (21. Nov 2010)

Naja, da fehlen noch ein paar Zeilenangaben...
Hinweis:
In src[0] steht, wie oft die Schleife durchlaufen werden soll.
In der Zeile in der Schleife wird das um 1 erhöhte Element aus dem Array src gelesen. Danach sogar die Schleifenvariable um 2 erhöht. Es gibt natürlich eine Konstellation, wo das "src[i+1]" gerade ein Element des Arrays "greift", welches nicht existiert?

Exceptions werden abgefangen, indem man die betrofenen Zeilen in einen try-catch Block packt.
Bei der Schleife entweder die ganze Schleife in einen try-catch Block packen, oder das Codestück "auslagern", d.h. das 
das "new Integer(src[0])" in eine eigene Zeile, die dann mit einem try-catch Block umfasst wird.

Hatti


----------

