Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Java lancer et lancer

Lancer Java et lancers

Dans ce didacticiel, nous apprendrons à utiliser le mot-clé throw et throws pour la gestion des exceptions à l'aide d'exemples.

En Java, les exceptions peuvent être classées en deux types :

Reportez-vous à Exceptions Java pour en savoir plus sur les exceptions cochées et non cochées.

Habituellement, nous n'avons pas besoin de gérer les exceptions non contrôlées. C'est parce que des exceptions non vérifiées se produisent en raison d'erreurs de programmation. Et, c'est une bonne pratique de les corriger au lieu de les manipuler.

Ce tutoriel va maintenant se concentrer sur la façon de gérer les exceptions vérifiées à l'aide de throw et throws .

Java lance le mot-clé

Nous utilisons le throws mot-clé dans la déclaration de la méthode pour déclarer le type d'exceptions qui pourraient se produire dans celle-ci.

Sa syntaxe est :

accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
  // code
}

Comme vous pouvez le voir dans la syntaxe ci-dessus, nous pouvons utiliser throws pour déclarer plusieurs exceptions.

Exemple 1 :Java génère un mot clé

import java.io.*;
class Main {
  public static void findFile() throws IOException {
    // code that may produce IOException
    File newFile=new File("test.txt");
    FileInputStream stream=new FileInputStream(newFile);
  }

  public static void main(String[] args) {
    try{
      findFile();
    } catch(IOException e){
      System.out.println(e);
    }
  }
}

Sortie

java.io.FileNotFoundException: test.txt (No such file or directory)

Lorsque nous exécutons ce programme, si le fichier test.txt n'existe pas, FileInputStream lance un FileNotFoundException qui étend le IOException classe.

Si une méthode ne gère pas les exceptions, le type d'exceptions qui peuvent se produire en son sein doit être spécifié dans le throws clause afin que les méthodes plus haut dans la pile d'appels puissent les gérer ou les spécifier en utilisant throws mot-clé eux-mêmes.

Le findFile() spécifie qu'un IOException peut être jeté. Le main() method appelle cette méthode et gère l'exception si elle est levée.

Lancer plusieurs exceptions

Voici comment nous pouvons lever plusieurs exceptions en utilisant le throws mot-clé.

import java.io.*;
class Main {
  public static void findFile() throws NullPointerException, IOException, InvalidClassException {
    
    // code that may produce NullPointerException
    … … … 

    // code that may produce IOException
    … … … 

    // code that may produce InvalidClassException 
    … … … 
  }

  public static void main(String[] args) {
    try{
      findFile();
    } catch(IOException e1){
      System.out.println(e1.getMessage());
    } catch(InvalidClassException e2){
      System.out.println(e2.getMessage());
    }
  }
}

Ici, le findFile() la méthode spécifie qu'elle peut lancer NullPointerException , IOException , et InvalidClassException dans son throws clause.

Notez que nous n'avons pas géré le NullPointerException . C'est parce qu'il s'agit d'une exception non contrôlée. Il n'est pas nécessaire de le préciser dans le throws clause et gérez-la.

lance le mot-clé Vs. essaie... attrape... enfin

Plusieurs méthodes peuvent entraîner des exceptions. Écrire try...catch pour chaque méthode sera fastidieux et le code deviendra long et moins lisible.

throws est également utile lorsque vous avez coché une exception (une exception qui doit être gérée) que vous ne voulez pas intercepter dans votre méthode actuelle.

Mot clé Java throw

Le throw mot-clé est utilisé pour lever explicitement une seule exception.

Lorsqu'une exception est levée, le flux d'exécution du programme est transféré depuis le try bloc au catch bloquer. Nous utilisons le throw mot-clé dans une méthode.

Sa syntaxe est :

throw throwableObject;

Un objet jetable est une instance de la classe Throwable ou sous-classe du Throwable classe.

Exemple 2 :mot clé Java throw

class Main {
  public static void divideByZero() {
    throw new ArithmeticException("Trying to divide by 0");
  }

  public static void main(String[] args) {
    divideByZero();
  }
}

Sortie

Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
    at Main.divideByZero(Main.java:3)
    at Main.main(Main.java:7)
exit status 1

Dans cet exemple, nous lançons explicitement un ArithmeticException.

Remarque : ArithmeticException est une exception non contrôlée. Il n'est généralement pas nécessaire de gérer les exceptions non contrôlées.

Exemple 3 :Lancer une exception vérifiée

import java.io.*;
class Main {
  public static void findFile() throws IOException {
    throw new IOException("File not found");
  }

  public static void main(String[] args) {
    try {
      findFile();
      System.out.println("Rest of code in try block");
    } catch (IOException e) {
      System.out.println(e.getMessage());
    }
  }
}

Sortie

File not found

Le findFile() la méthode lance un IOException avec le message que nous avons passé à son constructeur.

Notez que puisqu'il s'agit d'une exception vérifiée, nous devons le spécifier dans le throws clause.

Les méthodes qui appellent cela findFile() la méthode doit soit gérer cette exception, soit la spécifier en utilisant throws mot-clé eux-mêmes.

Nous avons traité cette exception dans le main () méthode. Le flux d'exécution du programme transfère du try bloc à catch bloquer lorsqu'une exception est levée. Donc, le reste du code dans le try le bloc est ignoré et les instructions dans le catch bloc sont exécutés.


Java

  1. Variables et littéraux Java
  2. Entrée et sortie de base Java
  3. Expressions, instructions et blocs Java
  4. Classe et objets Java
  5. Classe abstraite Java et méthodes abstraites
  6. Classe imbriquée et interne Java
  7. Java intercepte plusieurs exceptions
  8. Autoboxing et déballage Java
  9. Méthode Java String replace(), replaceAll() et replaceFirst()