Exception Frage
-
Macht es einen Unterschied ob man das throws IllegalArgumentsException
in der Methodendeklaration weglässt. Weil das Programm auch ohne läuft.class Test { public static int fak (int n) throws IllegalArgumentException { if (n<0) throw new IllegalArgumentException("Negative Zahl"); int i=0; int fak = 1; while (i<n) { i=i+1; fak = fak*i; System.out.println(" Ergebniss:" +fak); } return fak; } public static int choose (int n, int k) { int nFak = 1, kFak=1, nMinusKFak=1; int chooseNoverK=1; try { nFak=fak(n); try { kFak=fak(k); try { nMinusKFak=fak(n-k); chooseNoverK = nFak/(kFak*nMinusKFak); } catch(IllegalArgumentException nMinusKfake) { System.err.println (nMinusKfake.getMessage()+"fuer n-k"); } } catch (IllegalArgumentException kfake) { System.err.println (kfake.getMessage()+"fuer k !"); } } catch (IllegalArgumentException nfake) { System.err.println( nfake.getMessage() +"fuer n !"); } return chooseNoverK; } public static void main (String[] args) { choose (-5,7); } }
-
es duerfte aber ohne throws klausel nicht laufen
weil dir der compiler normalerweise erklaeren muesste: IllegalArgumentException never caught oder so irgendwaswas mir sonst so einfaellt
warum catched du es 3 mal??
du braeuchtest nur einen try/catch block der die exception faengt
und nicht 3
-
Da IllegalArgumetException eine sogenannte RuntimeException ist, muss man sie nicht explizit fangen.
Es ist hier eher eine Frage des Stils, ob man den Benutzer der Methode darauf hinweisen möchte, was ich so alles explizit in meiner Methode werfe.
/Dirk