1 / 13

Animation du tp2

Animation du tp2. Traitement des exceptions Le bloc try/catch/finally NFP121 3ème année de licence. // hypothèse : args[0] == "123"; try{ String str = args[0]; int i = Integer.parseInt(str); int résultat = unCalcul(i); System.out.println(" résultat =   " + résultat );

edita
Télécharger la présentation

Animation du tp2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Animation du tp2 • Traitement des exceptions • Le bloc try/catch/finally • NFP121 3ème année de licence

  2. // hypothèse : args[0] == "123"; try{ String str = args[0]; int i = Integer.parseInt(str); int résultat = unCalcul(i); System.out.println(" résultat =   " + résultat ); }catch(NumberFormatException nfe){ System.out.println(" exception ! "); } ... private static int unCalcul(int x){ return x+1;}

  3. // hypothèse : args[0] == "xyz"; try{ String str = args[0]; int i = Integer.parseInt(str); int résultat = unCalcul(i); System.out.println(" résultat =   " + résultat ); }catch(NumberFormatException nfe){ System.out.println(" exception ! "); } ...

  4. // hypothèse : args == null; try{ String str = args[0]; int i = Integer.parseInt(str); int résultat = unCalcul(i); System.out.println(" résultat =   " + résultat ); }catch(NumberFormatException nfe){ System.out.println(" exception ! "); } ... ???

  5. try{ // « JVM » // hypothèse : args == null; try{ String str = args[0]; int i = Integer.parseInt(str); int résultat = unCalcul(i); System.out.println(" résultat =   " + résultat ); }catch(NumberFormatException nfe){ System.out.println(" exception ! "); } … … }catch(Exception e){ e.printStackException(); } Par défaut la JVM « attrape » l ’exception

  6. // hypothèse : args == null; try{ String str = args[0]; int i = Integer.parseInt(str); int résultat = unCalcul(i); System.out.println(" résultat =   " + résultat ); }catch(NumberFormatException nfe){ System.out.println(" exception ! "); } ... • catch(ArrayIndexOutOfBoundsException e){ • System.out.println(" exception ! "); • }

  7. Passage à la pratique : le TP2 Bonjour, Lors du TP, nous avons obtenu une erreur dont on ne connait pas la source. Après tests avec Findbugs et PMD, toujours la même erreur et l'intervenant n'a pas trouvé non plus ce qui pourrait etre l'explication. Le test de l'applet (zeor absolu, mauvaise entrée) ne renvoie aucune erreur. Submitter : 1) test_AppletteFahrenheit_convertir(question3): exception inattendue ! java.lang.NullPointerException 2) test_AppletteFahrenheit_convertir_avec_erreur(question3): exception inattendue ! java.lang.NullPointerException 3) test_AppletteFahrenheit_convertir_bis(question3): exception inattendue ! java.lang.NullPointerException 4) test_AppletteFahrenheit_ZéroAbsolu(question3): exception inattendue ! java.lang.NullPointerException Ci joint le code source. JEWS : 21 sur 33 dans ce cas

  8. le code source un extrait. public void init(){ //…. try{ getContentPane().setBackground(Color.decode(getParameter("backgroundColor"))); } catch (NumberFormatException nfe){ getContentPane().setBackground(Color.pink); } //…. } http://java.sun.com/j2se/1.5.0/docs/api/java/applet/Applet.html#getParameter(java.lang.String) Returns: the value of the named parameter, or null if not set. Sans oublier setBackground(c ) avec une « bonne couleur » avec « null » Color.decode avec « une bonne valeur » Color.decode avec « une mauvaise valeur » Color.decode avec « null »

  9. public void init(){ //…. try{ getContentPane().setBackground(Color.decode(getParameter("backgroundColor"))); } catch (NumberFormatException nfe){ getContentPane().setBackground(Color.pink); } //…. } Color.decode avec « une mauvaise valeur » --> Color.decode avec « null » --> NumberFormatException ??? NullPointerException

  10. Tests distants avec JEWS :  backgroundColorest absent paramètre == null • String paramètre = getParameter("backgroundColor"); Submitter : 1) test_AppletteFahrenheit_convertir(question3): exception inattendue ! java.lang.NullPointerException 2) test_AppletteFahrenheit_convertir_avec_erreur(question3): exception inattendue ! java.lang.NullPointerException 3) test_AppletteFahrenheit_convertir_bis(question3): exception inattendue ! java.lang.NullPointerException 4) test_AppletteFahrenheit_ZéroAbsolu(question3): exception inattendue ! java.lang.NullPointerException

  11. public void init(){ //…. try{ getContentPane().setBackground(Color.decode(getParameter("backgroundColor"))); } catch (NumberFormatException nfe){ getContentPane().setBackground(Color.pink); } //…. } catch (NullPointerException npe){ getContentPane().setBackground(Color.pink); } Bravo !!!

  12. // question ? : domaine de paramètre, quelles sont les valeurs possibles ? public void init(){ //…. try{ String paramètre =getParameter("backgroundColor"); Color couleurDuFond = Color.decode(paramètre); getContentPane().setBackground(couleurDuFond); } catch (NumberFormatException nfe){ getContentPane().setBackground(Color.pink); }catch (NullPointerException npe){ getContentPane().setBackground(Color.pink); } } // question ? : toutes ces valeurs sont-elles compatibles avec Color.decode ? // question ? : domaine de couleurDuFond, quelles sont les valeurs possibles ? // question ? : etc... // exceptions : la liste est-elle exhaustive ?

  13. En conclusion • Programmation == discipline rigoureuse • recherche « google » rules good programming Writing Correct Programs(Section 9.2 ) http://www.faqs.org/docs/javap/c9/index.html Programming style: how to keep control of your programs http://www.iu.hio.no/~mark/lectures/ProgrammingStyleGuide.html

More Related