Soit le listing ci-dessous :

class MonException extends Exception {

     MonException() { super(); }

     MonException(String s) { super(s); }

}

 

class MaSousException extends MonException {

     MaSousException() { super(); }

     MaSousException(String s) { super(s); }

}

 

class TestException

{

  public static void main(String[] args)

  {

         for (int i = 0; i < args.length; i++)

     {

         try

         {

              System.out.println("");

                  except(Integer.valueOf(args[i]).intValue());

                  System.out.println("TestException avec \"" + args[i] +

                       "\" n'a pas créé d'exception");

         }

         catch (MonException e)

         {

              System.out.println("MonException lancée par TestException \"" + args[i] +

                      "\" (Message:" + e.getMessage()+")");

              }

         catch (Exception e)

         {

                  System.out.println("TestException \"" + args[i] +    "\" à lancé "

                      + e.getClass() + "\n  avec le message: " + e.getMessage());

         }

         }

     }

 

     static int except(int n) throws MonException

     {

         int i = 0;

         String[] as = new String[6];

                               

         try

         {

              switch(n)

              {

                  case 1:

                                return i/i;

                   case 2:

                                throw new MaSousException("THROW de blabla");

                  case 3: 

                                throw    new MonException("THROW c'est THROW");

                  case 4:

                                as[2]="Quatre";

                                return Integer.valueOf(as[2]).intValue();

                  case 5: 

                                as = new String[2];

                  case 6:

                                i = as[2].length();

                                return i;

              }

             

              return 0;

         }

        

         catch (MaSousException e)

         {

              System.out.println("MaSousException interceptée dans Except");

                  throw e;

         }

         finally {

              System.out.println("[Appel de except(\"" + n +"\") terminé]");

         }

     }

}

Indiquez ce qui va être affiché a l'écran si on lance le programme avec les arguments suivant:

TestException 4 2 7 5 1 6 3

 

NB: N'oubliez pas qu'une variable de type String doit être créée avant utilisation. Une simple affectation s="chaine" équivaut à une création car cela revient à écrire s= new String("chaine").

Servez-vous de l'extrait de la hiérarchie de classes d'exceptions ci-dessous :  

·        class java.lang.Throwable  

·        class java.lang. Error

·        class java.lang. LinkageError

·        class java.lang. VirtualMachineError

·        class java.lang. Exception

·        class java.lang. ClassNotFoundException

·        class java.util.zip. DataFormatException

·        class java.io. IOException

·        class java.lang. RuntimeException

·        class java.lang. ArithmeticException

·        class java.lang. ClassCastException

·        class java.lang. IllegalArgumentException

·        class java.lang. NumberFormatException

·        class java.lang. IndexOutOfBoundsException

·        class java.lang. ArrayIndexOutOfBoundsException

·        class java.lang. StringIndexOutOfBoundsException

·        class java.lang. NullPointerException