Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions
Java Lecteur - Exceptions Objectifs du chapitre A l'issue du chapitre vous saurez: comment fonctionne la gestion des erreurs en Java; utiliser les structures de contrôle try/catch/finally en Java; utiliser le mot clé throw; modifier la signature d'une méthode pour tenir compte de la gestion des exceptions. 2
Java Lecteur - Exceptions Les exceptions en Java obliger les développeurs à déclarer la liste des cas d'erreurs qui peuvent survenir dans les méthodes qu'ils écrivent obliger les développeur à traiter les cas d'erreur qui peuvent survenir dans les méthodes qu'ils appellent. Le But des concepteurs de Java 3
Java Lecteur - Exceptions Classes d'exception Une classe d'exception hérite directement ou indirectement de la classe Exception Il y a un certain nombre de classe d'exception "populaires" qui font partie de la bibliothèque Java: NullPointerException : appeler un attribut ou ue méthode sur une référence nulle ArithmeticException : division par zero (entre autres) IndexOutOfboundsException: utilisation d'un index en dehors des bornes du tableau On peut déclarer ses propres classes d'exception. 4
Java Lecteur - Exceptions Déclarer une exception Une méthode suceptible de lever une exception doit la déclarer dans la signature on utilise le mot clé throws suivi de la liste des exceptions public String readLine() throws IOException {... } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {... } public boolean execute(String sql)throws SQLException {... } 5
Java Lecteur - Exceptions Lever une exception On peut lever des exception "à la main" ; On utilise le mot clé throw L'exception doit être déclarée dans la signature public Socket accept() throws IOException { if (isClosed()) throw new SocketException("Socket is closed"); if (!isBound()) throw new SocketException("Socket is not bound yet"); Socket s = new Socket((SocketImpl) null); implAccept(s); return s; } 6
Java Lecteur - Exceptions Gérer une exception Pour gérer les exceptions on utilise un try/catch le bloc try encadre les appels ou les instructions qui sont susceptibles de générer des exceptions; à un bloc try doit correspondre un ou plusieurs blocs catch. Chaque bloc catch traite une classe d'exception. Ce sont les différents blocs catch qui constituent le gestionnaire d'exception. à un bloc try correspond éventuellement un bloc finally exécuté dans tous les cas (erreur ou pas). le bloc finally est utilisé pour "faire le ménage" 7
Java Lecteur - Exceptions Gérer une exception syntaxe du try/catch try { // Code qui peut générer des exceptions } catch(Classe1 c1) { // Gérer les exceptions de type Classe1 } catch(Classe2 c2) { // Gérer les exceptions de type Classe2 } finally { // Les traitements qui doivent être faits dans tous les cas. } // etc... 8
Java Lecteur - Exceptions Gérer une exception public void attendreConnexion() { InputStream is; MessageData receivedMessage ; Socket connexion = null ; try { if (socketServeur == null) { socketServeur = new ServerSocket( port); } // attente d'une demande de connection connexion = this.socketServeur.accept() ; System.out.println("J'ai une demande de connection...") ; // traitement de la demande de connexion messagerieServeur.ecouter(connexion); } catch (IOException ex) { System.out.println("Erreur :" + ex ); return ; } Exemple 9
Java Lecteur - Exceptions Un texte ici 10