Maison  >  Article  >  Java  >  Comment intercepter et gérer les exceptions Java

Comment intercepter et gérer les exceptions Java

coldplay.xixi
coldplay.xixioriginal
2020-08-19 10:43:264957parcourir

Méthodes de capture et de traitement des exceptions Java : 1. throws mot-clé, le système renvoie automatiquement les informations d'exception capturées à la méthode d'appel supérieure ;2. La fonction de throw est de lancer manuellement l'objet instancié de la classe d'exception ; 3. RunException est une sous-classe d'Exception, et c'est à l'utilisateur de choisir de la traiter ou non.

Comment intercepter et gérer les exceptions Java

[Recommandations d'apprentissage associées : Tutoriel de base Java]

Méthodes de capture et de gestion des exceptions Java :

1. Utilisation de la gestion des exceptions

Étant donné que le bloc final peut être omis, le format de gestion des exceptions peut être divisé en trois catégories : try{ }—— catch { }, try{ }——catch{ }——finally{ }, try{ }——finally{ }.

 1 public class DealException
 2 {
 3     public static void main(String args[])
 4     {    
 5         try
 6         //要检查的程序语句
 7         {
 8             int a[] = new int[5];
 9             a[10] = 7;//出现异常
10         }
11         catch(ArrayIndexOutOfBoundsException ex)
12         //异常发生时的处理语句
13         {
14             System.out.println("超出数组范围!");
15         }
16         finally
17         //这个代码块一定会被执行
18         {
19             System.out.println("*****");
20         }
21         System.out.println("异常处理结束!");
22     }
23 }

On peut voir qu'il y a deux jugements à faire pendant le processus de capture d'exceptions, le premier est de savoir si une exception est générée dans le bloc de programme try, et le second est de savoir si l'exception générée est la même. comme celui que vous souhaitez attraper entre les crochets catch(). L'exception est la même.

Alors, que devez-vous faire si l'exception qui se produit est différente de l'exception que vous souhaitez intercepter dans catch() ? En fait, nous pouvons suivre une instruction try avec plusieurs instructions catch de gestion des exceptions pour gérer de nombreux types d'exceptions différents.

 1 public class DealException
 2 {
 3     public static void main(String args[])
 4     {    
 5         try
 6         //要检查的程序语句
 7         {
 8             int a[] = new int[5];
 9             a[0] = 3;
10             a[1] = 1;
11             //a[1] = 0;//除数为0异常
12             //a[10] = 7;//数组下标越界异常
13             int result = a[0]/a[1];
14             System.out.println(result);
15         }
16         catch(ArrayIndexOutOfBoundsException ex)
17         //异常发生时的处理语句
18         {
19             System.out.println("数组越界异常");
20             ex.printStackTrace();//显示异常的堆栈跟踪信息
21         }
22         catch(ArithmeticException ex)
23         {
24             System.out.println("算术运算异常");
25             ex.printStackTrace();
26         }
27         finally
28         //这个代码块一定会被执行
29         {
30             System.out.println("finally语句不论是否有异常都会被执行。");
31         }
32         System.out.println("异常处理结束!");
33     }
34 }

Dans l'exemple ci-dessus, ex.printStackTrace(); est l'utilisation de l'objet de classe d'exception ex, qui génère des informations détaillées sur la trace de la pile d'exceptions, y compris le type d'exception, quel package, quelle classe et quelle méthode. l'exception s'est produite et le numéro de ligne où l'exception s'est produite.

2. mot-clé throws

La méthode déclarée par throws signifie que la méthode ne gère pas les exceptions, mais que le système renvoie automatiquement les informations d'exception capturées à la méthode appelante supérieure .

 1 public class throwsDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int[] a = new int[5];
 6         try
 7         {
 8             setZero(a,10);
 9         }
10         catch(ArrayIndexOutOfBoundsException ex)
11         {
12             System.out.println("数组越界错误!");
13             System.out.println("异常:"+ex);
14         }
15         System.out.println("main()方法结束。");
16     }
17     private static void setZero(int[] a,int index) throws ArrayIndexOutOfBoundsException
18     {
19         a[index] = 0;
20     }
21 }

Le mot-clé throws lève une exception. "ArrayIndexOutOfBoundsException" indique le type d'exception possible dans la méthode setZero(). Une fois qu'une exception se produit dans la méthode, la méthode setZero() ne la gère pas elle-même, mais la soumet. l'exception à cela. La méthode main() de l'appelant supérieur.

3. Mot-clé Throw

La fonction de throw est de lancer manuellement l'objet instancié de la classe d'exception.

 1 public class throwDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         try
 6         {
 7             //抛出异常的实例化对象
 8             throw new ArrayIndexOutOfBoundsException("\n个性化异常信息:\n数组下标越界");
 9         }
10         catch(ArrayIndexOutOfBoundsException ex)
11         {
12             System.out.println(ex);
13         }
14     }
15 }

Nous pouvons constater que throw semble rechercher des problèmes, déclenchant une exception d'exécution et personnalisant le message d'invite. En fait, throw est généralement utilisé conjointement avec throws, et ce qui est lancé est une instance de la classe d'exception qui a été générée dans le programme.

ExceptionDemo

Résultat de sortie :

La méthode setZero démarre :

La méthode setZero se termine.

Exception : java.lang.ArrayIndexOutOfBoundsException : 10

la méthode main() se termine !

4. Classe RuntimeException

La différence entre Exception et RuntimeException :

Exception : Il est obligatoire que les utilisateurs la gèrent

RunException : est une sous-classe d'Exception, et c'est à l'utilisateur de choisir s'il souhaite la gérer.

Comment intercepter et gérer les exceptions Java

                                                                                                                                                                 Il existe de nombreuses méthodes dans la classe parent, et vous pouvez également écrire vos propres méthodes pour gérer des événements spécifiques. Java fournit une méthode d'héritage pour exécuter des classes d'exception écrites par les utilisateurs.

 1 class MyException extends Exception
 2 {
 3     public MyException(String message)
 4     {
 5         super(message);
 6     }
 7 }
 8 public class DefinedException
 9 {
10     public static void main(String[] args) 
11     {
12         try
13         {
14             throw new MyException("\n自定义异常类!");
15         }
16         catch(MyException e)
17         {
18             System.out.println(e);
19         }
20     }
21 }

Recommandations d'apprentissage associées : Vidéo de programmation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn