La ** classe d'exception ** fournie par l'API se trouve dans la hiérarchie d'héritage suivante.
Ici, nous traiterons des exceptions en particulier pour les exceptions de type Exception.
La gestion des exceptions peut être décrite dans l'instruction try-catch
.
try{
FileWriter fw = new FileWriter("c:¥¥data.txt");
fw.write("hellow!");
}catch(IOException e){
System.exit();
}
Si vous ne gérez pas les exceptions, l'erreur de compilation suivante se produira dans le système d'exceptions.
Exception java.io.IOException n'est pas signalé.
Vous devez attraper ou déclarer un lancer pour lancer.
(Je ne l'ai pas encore lu)
Entourez la partie correspondante de try-catch
ou
Déclarez throw IOException
dans la définition de méthode
L'appelant doit gérer les exceptions.
Si vous écrivez la partie conditionnelle de catch comme ʻException e`, Attrapez des exceptions ou des exceptions RuntimeException. L'intention est d'attraper grossièrement les classes descendantes de la classe Exception.
try{
FileWriter fw = new FileWriter("c:¥¥data.txt");
fw.write("hellow!");
}catch(Exception e){
System.out.println("Un problème est survenu"); //En quelque sorte ...
}
Je ne sais pas si l'expression "attraper abstraitement" est correcte ...
Si vous ajoutez enfin après catch, Vous pouvez définir le processus que vous souhaitez exécuter indépendamment de l'occurrence d'une exception. Pour le nettoyage, comme la fermeture de fichiers ouverts et la fermeture de bases de données et de connexions réseau.
try{
FileWriter fw = new FileWriter("c:¥¥data.txt");
fw.write("hellow!");
}catch(IOException e){
System.out.println("Un problème est survenu");
}finally{
fw.close();
}
Si l'écriture du bloc finally est un problème, écrivez ()
dans le premier try
.
try(
FileWriter fw = new FileWriter("c:¥¥data.txt");
){
fw.write("hellow!");
}catch(IOException e){
System.out.println("Un problème est survenu");
}
Si vous optez pour cela, il semble que le premier data.txt
ouvert sera automatiquement closed ()
.
Cependant, il est limité aux types qui implémentent l'interface java.lang.AutoCloseable
.
Lors de la déclaration avec une méthode, écrivez comme suit.
** ... le nom de la méthode lève la classe d'exception 1, la classe d'exception 2, ... **
Sub.java
public class Sub{
public static void subsub() throws IOException{
FileWriter fw = new FileWriter("date.txt");
fw.write("hello!");
}
}
Main.java
public class Main{
public static void main(Strgin[] args){
try{
//Il existe différents processus ...
subsub();
}catch(IOException e){
System.exit();
}
}
}
Parce qu'il n'est pas traité par la méthode subsub appelée Cela ressemble à un traitement avec la méthode principale de l'appelant.
les lancers sont également utilisés pour lancer des exceptions.
Écrivez comme suit. Notez qu'il s'agit d'une forme singulière.
** lancer une instance d'exception; **
Ou
** lancer une instance d'exception ("message d'erreur"); **
Person.java
Public class Person{
int age;
public class setAge(int Age){
if(age <= 0){
//S'il est égal ou inférieur à 0
throw new IllgalArgumentExeception("L'âge doit être un nombre positif. Valeur spécifiée=" + age);
}
//Si c'est un nombre positif
this.age = age;
}
}
Main.java
public class Main{
public static void main(String[] args){
Person p = new Person();
p.setAge(-128); //Essayez maintenant de définir une valeur incorrecte.
}
}
En conséquence de l'exécution,
Exception in thread "main" java.lang.IllegalArgumentException:L'âge doit être un nombre positif. Valeur spécifiée=-128
at Person.setAge(Person.java:6)
at Main.main(Main.java:4)
L'instruction throws lève une instance IllegalArgumentException à la machine virtuelle Java et la signale. L'exception est renvoyée à la méthode main, mais ici, la JVM finit par tuer le programme car elle n'a pas intercepté l'exception.
Vous pouvez créer votre propre classe d'exceptions en héritant de la classe d'exceptions existante. La méthode de fabrication est la même que la méthode d'héritage générale.
Par exemple, lors du développement d'un programme pour lire des documents ou quelque chose Je souhaite une gestion des exceptions lors de la lecture d'un fichier de document non pris en charge ...
UnsupportedDocumentFileException.java
public class UnsupportedDocumentFileException extends Exception{
public UnsupportedDocumentFileException(String){
//Constructeur qui reçoit un message d'erreur
super(msg);
}
}
Main.java
public class Main{
public static void main(String[] args){
try{
//Lancer une exception à titre d'essai...
throw new UnsupportedDocumentFileException
("Ceci est un fichier de document non pris en charge");
}catch(Exception e){
e.printStackTrace();
}
}
}
ʻException.printStackTrace () `renvoie les informations suivantes.
--Nom de classe de l'exception levée --Explication de l'exception passée dans le constructeur
Pratique.
[Introduction à Java 2nd Edition] (https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/484433638X) Pp.562-595
Recommended Posts