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 irgendwas

    was 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


Anmelden zum Antworten