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 :
- Exceptions non vérifiées : Ils ne sont pas vérifiés à la compilation mais à l'exécution. Par exemple :
ArithmeticException
,NullPointerException
,ArrayIndexOutOfBoundsException
, exceptions sousError
classe, etc. - Exceptions vérifiées : Ils sont vérifiés au moment de la compilation. Par exemple,
IOException
,InterruptedException
, etc.
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
- Variables et littéraux Java
- Entrée et sortie de base Java
- Expressions, instructions et blocs Java
- Classe et objets Java
- Classe abstraite Java et méthodes abstraites
- Classe imbriquée et interne Java
- Java intercepte plusieurs exceptions
- Autoboxing et déballage Java
- Méthode Java String replace(), replaceAll() et replaceFirst()