Jump to content
×
×
  • Create New...

La Gestion des Erreurs


Recommended Posts

  • Bot

Niveau requis Débutant

Temps estimé : 30 minutes

Bonjour !

 

Comme j'ai fais les erreurs en Python, et que le JAVA est un langage que je maîtrise assez, je vous propose de faire les erreurs en JAVA ! Les erreurs représentent une notion très importante en programmation. Une erreur, cela ne stop pas forcément le programme, mais ça peut, et la plus part du temps, ça le fera. Si vous utilisez Eclipse comme moi, vous allez tout de suite savoir si une erreur est survenu, car vous allez avoir du rouge partout !

 

Dans ce tutoriel, vous allez en tant que développeur devoir réfléchir, vous allez devoir prévoir, deviner où les erreurs vont intervenir. Une erreur simple qui peut arriver (Je l'a prends comme exemple car je l'ai eu sur Metin2 assez souvent...) : La division par 0. Vous allez devoir prévoir que le diviseur peut être égale à 0, et vous allez devoir vous préparer à cela. Par exemple, si vous transformer une valeur entrée par l'utilisateur en chiffre entier (Intègre/int), vous devez aussi prévoir que l'utilisateur peut très bien taper des lettres, cela causera une erreur fatale dans votre protocole ! Pour suivre ce tutoriel, vous n'avez pas besoin d'avoir de grosses connaissances en JAVA, juste votre tête et de quoi essayer par vous même.

 

JAVA contient déjà des erreurs prédéfinies, elles se trouvent dans une classe nommée Exception. Par exemple, je vous parlais de la division faite pas 0 : Cette erreur est bien gérée dans cette classe. Pour suivre la prochaine partir de ce tutoriel je vais garder comme exemple la division par 0.

 

Révélation

 

Par exemple tapons ce code :

int a = 32, d = 0;
System.out.println(a/d);
D comme diviseur, Ce code est assez simple, on défini deux variables intègres puis on les divise. Mais ! Ici, nous essayons de diviser par 0, nous allons donc avoir un gros problème, personne ne sait diviser par 0 ! La console nous renvoie quelque chose du genre : 
/ by zero

Et Juste cette partie sert à savoir que notre protocole ne pourra pas s'exécuter. Vous pourrez aussi voir que l'exception/l'erreur qui a été déclenchée est : ArithmeticException et c'est normal. Les mathématiques, c'est  un art arithmétique.

 

Cette erreur est assez simple à prévoir. Nous allons donc la gérer, la capturer ! Nous allons essayer de faire la division, et si le programme n'y arrive pas, nous afficherons un message d'erreur. "Essayer" se dit en anglais "try", parfait !

int a = 32, d = 0;
try {
    System.out.println(a/d);
}catch (ArithemeticException e){
    System.out.println("Vous ne pouvez pas diviser par 0 !");
}

Si vous lancez l'application vous verrez que l'erreur a bien été gérée :

Vous ne pouvez pas diviser par 0 !

Je vous propose de vous résumer ce qu'il se passe :

 

  • Nous déclarons deux variable dont une égale à 0
  • On isole, on essaye d'exécuter le code "Sustem.out.println(a/d)
  • Si il y a une exception du type "ArithmeticException" relevé dans la ligne du dessus :
  • On envoie le message : Vous ne pouvez pas diviser par 0 !

 

Vous vous demandez maintenant à quoi sert le "e". Et bien il sert à capturer l'erreur. Généralement les developpeurs vont isoler l'erreur et la noter, par exemple, nous allons faire comme ceci :

System.out.println("Attention vous essayez de diviser par 0 ! " + e.getmessage());

Nous affichons ici notre message et demandons à la console d'afficher l'erreur qu'elle a relevé. Grâce à ce bloc, notre programme ne s'arrête pas. Mais vous pouvez décider d'arrêter quand même grâce à une autre clause : finally. Finally permet de faire le final, d'exécuter un dernier protocole avant la fin du programme. Elle se place à la suite d'un catch comme ceci :

int a = 32, d = 0;
try {
   System.out.println(a/d);
}catch (ArithemeticException e){
   System.out.println("Vous ne pouvez pas diviser par 0 !");
}
finally{
   System.out.println("Le programme s'arrête après ce message !");
}
Vous pouvez par exemple utiliser la clause finally pour sauvegarder des données en urgence, fermer un fichier, lancer un outils etc... Les choix sont illimités. Je vais vous montrer en dernière partie comment faire plusieurs catch en même temps. Tapez :
int a = 32, d = 0;
try {
   System.out.println(a/d);
}catch (ArithemeticException | UneAutreException e){
   System.out.println("Vous ne pouvez pas diviser par 0 !");
}
Grâces à ce code, vous pouvez placer deux erreurs qui vous enverrons le même message. Si vous voulez mettre un message spécial pour chaque exceptions utilisez plusieurs catch à la suite :
int a = 32, d = 0;
try {
   System.out.println(a/d);
}catch (ArithemeticException e){
   System.out.println("Vous ne pouvez pas diviser par 0 !");
}catch (AutreException e) {
   System.out.prinln("Un autre message d'erreur);
}

 

 

 

Et voilà, c'est fini pour aujourd'hui. Je ferais peut être un autre tutoriel qui vous apprendra à créer vos propres types d'erreur.

Merci d'avoir lu.

 

Cordialement,

Takuma

  • J'adore 1

090100logo.png 090149logo-4-bis.png

Link to comment
  • Replies 4
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

  • 2 weeks later...

Le java, reste un langage comme les autres, il y a la base qui est simple et des choses plus complexe, les différents pattern qui existe sont assez simple (avis perso), J'ai fait un "tuto" sur JUnit pour les tests unitaire.

 

Ce qu'il manque dans ton tuto, selon moi c'est montrer comment créer nos propres exceptions :) sinon c'est sympa comme tuto

Partages :

Projets :

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Flux d'Activité

    1. 1

      Site internet (CMS) compatible avec tous les emulateurs 1.29 (Azuriom)

    2. 1

      Site internet (CMS) compatible avec tous les emulateurs 1.29 (Azuriom)

    3. 7
    4. 84
    5. 32

      Rodnia.net | PVM | International | The Great Conqueror |

    6. 16

      Map The OpenWorld Metin2

    7. 0
    8. 6

      [V2]Gurgarath Resurgence

  • Recently Browsing

    • No registered users viewing this page.

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.