Es würde von der ersten gefangen werden - aber auch eine Reihe anderer Ausnahmen. Sie sollten nicht mehr fangen, als Sie wirklich wollen.
Die zweite ist besser, wenn Sie haben , um es zu fangen ... aber normalerweise dies deutet auf einen Fehler im aufrufenden Code hin. Manchmal ist dies der Fall einer anderen Methode, die nicht ihre Argumente validiert usw. In einer idealen Welt sollte eine Möglichkeit für den Aufrufer sein, den Wert vorher zu validieren, wenn IllegalArgumentException
geworfen wird oder eine Version aufrufen, die auf nicht außergewöhnliche Weise fehlschlägt (z. B. das TryParse
-Muster in .NET, das zugegebenermaßen in Java schwieriger ist, ohne out
-Parameter). Das ist nicht immer der Fall, aber jedes Mal, wenn Sie IllegalArgumentException
erhalten, sollten Sie überprüfen, ob Sie es vermeiden konnten, indem Sie die Werte überprüfen, bevor Sie die Methode aufrufen.
Sie sollten keine IllegalArgumentException behandeln. Es ist der Zweck, den Entwickler zu informieren, dass er eine Methode mit falschen Argumenten aufgerufen hat. Lösung ist, die Methode mit anderen Argumenten aufzurufen.
Wenn Sie es fangen müssen, sollten Sie
verwenden %Vor% Sie sollten sich von catch (Exception)
fernhalten, da Sie auf diese Weise jede mögliche Ausnahme abfangen können. Wenn Sie wirklich nur das IllegalArgumentException
erwarten und den Fall behandeln, sollten Sie diesen Bereich nicht erweitern. fügen Sie besser weitere catch-Blöcke für andere Arten von Ausnahmen hinzu, dann.