Orienté objet Java (7): exception

Les exceptions en java sont divisées en deux catégories:

Une erreur, une situation grave, ne peut pas être gérée dans le programme une fois qu'elle se produit.

Une exception est une situation anormale qui se produit pendant l'exécution. Une fois qu'elle se produit, elle peut être traitée.

La classe Throwable est la classe Throwable pour toutes les erreurs et exceptions dans le langage Java. La puissance de deux sous-types, Erreur et Exception.

Erreur: aucune description détaillée
Exception:
---- RuntimeException Exception d' exécution, également appelée exception de non-détection, qui peut être gérée ou non dans le programme.

---- À l'exception de RuntimeException, ce sont toutes des exceptions non exécutables, qui deviennent également des exceptions de détection. Ces exceptions doivent être gérées dans le programme et ne peuvent pas être gérées si elles ne sont pas gérées (échec de la compilation)
-------- - tels que: FileNotFoundException, ClassNotFoundException

Les principales méthodes de Throwable sont:
getMessage ()
printStackTrace ()

Il existe généralement trois constructeurs dans la classe d'exception, qui sont plus couramment utilisés: un
constructeur vide,
un constructeur de paramètre de chaîne et
un constructeur de paramètre de type d'exception

Les erreurs de syntaxe, les erreurs de logique et les erreurs de codage ne sont pas des exceptions. Elles sont appelées erreurs de compilation.

Insérez la description de l'image ici
Exception de capture

 try: La première étape pour intercepter une exception est d'utiliser un bloc d'instructions try {...} pour sélectionner la portée de l'exception et de placer le code qui peut être anormal dans le bloc d'instructions try.

 catch (Exceptiontype e): dans le bloc catch se trouve le code de gestion de l'objet d'exception. Chaque bloc d'instructions try peut être accompagné d'une ou plusieurs instructions catch pour gérer les différents types d'objets d'exception qui peuvent être générés. Si vous savez exactement quel type d'exception est généré, vous pouvez utiliser la classe d'exception comme paramètre catch; vous pouvez également utiliser sa classe parent comme paramètre catch.

 Comme les autres objets, vous pouvez accéder aux variables membres d'un objet d'exception ou appeler ses méthodes.
-------- La méthode getMessage () est utilisée pour obtenir des informations sur l'événement anormal
------ printStackTrace () est utilisé pour suivre le contenu de la pile d'exécution lorsque l'événement anormal se produit.

 Enfin: indépendamment du fait qu'un événement anormal se produise dans les blocs de code try et catch, les instructions du bloc finally seront exécutées. Enfin, l'instruction est facultative

La structure try ... finally est très couramment utilisée en développement. Le but est de ne détecter aucune exception, mais j'ai des ressources qui doivent être libérées. En ce moment, la structure try ... finally est généralement utilisée.

Remarque
- Les trois blocs d'instructions try, catch et finally ne peuvent pas être utilisés seuls. Les trois peuvent former trois structures: try ... catch ... enfin, try ... catch, try ... enfin, il peut y en avoir une ou plusieurs instructions catch, et la déclaration finale est au plus Un;

- La portée des variables dans les blocs de code try, catch et enfin trois est à l'intérieur du bloc de code, et elles sont indépendantes les unes des autres et ne sont pas accessibles. Si vous voulez être accessible dans les trois blocs, vous devez définir des variables en dehors de ces blocs;

-Lorsqu'il y a plusieurs blocs catch, une seule des classes d'exception sera mise en correspondance et le code du bloc catch sera exécuté, et aucun autre bloc catch ne sera exécuté, et l'ordre des instructions catch correspondantes est de haut en bas;

- L'instruction catch de l'exception de classe de base ne peut pas être écrite avant l'instruction catch de la sous-classe;

Règle: la méthode de réécriture doit lever ou non le même type d'exception que la méthode d'origine (cette règle n'inclut pas les exceptions non détectées)


Lancer des exceptions : lancer  Déclarer lever des exceptions: la deuxième façon de gérer les exceptions

- Si une méthode (lorsque l'instruction in est exécutée) peut générer une sorte d'exception, mais que vous ne savez pas comment gérer ce type d'exception, cette méthode doit déclarer explicitement que l'exception est levée, indiquant que la méthode ne le sera pas gérer ces exceptions et l'appelant de cette méthode est responsable du traitement.

- Utilisez la clause throws dans la déclaration de méthode pour déclarer la liste des exceptions levées. Le type d'exception après throws peut être le type d'exception généré dans la méthode ou sa classe parente.

- Déclarez un exemple d'exception:

public void readFile(String file) throws FileNotFoundException {
    
    
		......
		// 读文件的操作可能产生FileNotFoundException类型的异常
		FileInputStream fis = new FileInputStream(file);
		......
     }

Lance l'objet à la déclaration de méthode Lance le mot-clé
A: jette une déclaration
Identifiez le problème et signalez-le à l'appelant. Si l'exception de détection est levée dans la méthode via throw, mais pas capturée et traitée, elle doit être déclarée via throws pour que l'appelant la gère.

B: Déclarer le format d'exception
Type de valeur de retour du modificateur Nom de la méthode (paramètre) renvoie le nom de classe d'exception 1, le nom de classe d'exception 2 ... {}

C: Remarque:
plusieurs classes d'exceptions peuvent être écrites après les levées, séparées par des virgules.


Lancez manuellement une exception dans la méthode : throw  Lancez un objet d'exception à l'intérieur de la méthode: mot-clé throw

En Java, un mot clé throw est fourni, utilisé pour lancer un objet d'exception spécifié.
Throw est utilisé dans une méthode pour lancer un objet d'exception, passer l'objet d'exception à l'appelant et terminer l'exécution de la méthode actuelle (un bloc finally sera exécuté en premier, puis se terminera).

Utilisez le mot-clé throw pour
effectuer des opérations spécifiques Créez un objet d'exception. Encapsulez des informations rapides (les informations peuvent être écrites par vous-même).
 Informez l'appelant de cet objet d'exception via le mot-clé throw.
Le mot clé throw utilise le format
throw new exception class name (parameter);
par exemple: throw new NullPointerException ("le tableau arr auquel accéder n'existe pas");
throw new ArrayIndexOutOfBoundsException ("l'index n'existe pas dans le tableau et est hors de portée");

Lancez une exception manuellement, ** pourquoi? importance? ** est d'indiquer à l'appelant de la méthode qu'il y a une exception ici.

Exception personnalisée

Lorsque le type d'exception dans le JDK ne peut pas répondre aux besoins du programme, vous pouvez personnaliser le type d'exception. Étapes pour utiliser une classe d'exception personnalisée:

 Définir la classe d'exception et hériter d'Exception ou RuntimeException;
 Ecrire la méthode de construction de la classe d'exception et hériter de l'implémentation de la classe parente;

Exception personnalisée: en regardant le code source pertinent de la classe d'exception, j'ai trouvé qu'il n'y avait rien à voir. Les classes d'exception sont en fait les mêmes, mais les noms sont différents. Pourquoi est-il conçu comme ça? Raison: Grâce à différentes exceptions, vous pouvez déduire quels problèmes se sont produits dans le système.

Questions d'entrevue:

1. Quelle est la différence entre Finaliser Finalement?
Compréhension personnelle:

Final : Les classes, méthodes et variables peuvent être modifiées, ce qui signifie que la classe finale modifiée, ne peut pas être héritée, les méthodes modifiées, ne peuvent pas être écrasées, les variables modifiées ne peuvent être affectées qu'une seule fois et ne peuvent pas être affectées à nouveau après l'affectation.

enfin : c'est le try ... catch ... enfin dans la gestion des exceptions de java. Il est utilisé et ne peut pas être utilisé seul. Le code du bloc finally sera exécuté indépendamment du fait qu'une exception soit levée ou non, donc il est généralement utilisé pour libérer des ressources, telles que la fermeture du flux IO, la fermeture de la connexion à la base de données, la fermeture du socket, etc.

finaliser : il s'agit d'une méthode de la classe Object. Sa fonction est de notifier au ramasse-miettes qu'il y a des déchets à collecter. Lorsque nous utilisons cette méthode, nous devons réécrire cette méthode et écrire les ressources qui doivent être libérées dans ce corps de méthode Le ramasse-miettes Cette méthode sera appelée automatiquement lors du recyclage.

Deuxièmement, la différence entre les lancers et les lancers?
1. Différentes fonctions: throw est utilisé par les programmeurs pour générer et lancer des exceptions par eux-mêmes, throws est utilisé pour déclarer que des exceptions sont levées dans la méthode;
2. La position d'utilisation est différente: throw est situé à l'intérieur du corps de la méthode et peut être utilisé comme une instruction distincte; lance doit Il suit la liste des paramètres de la méthode et ne peut pas être utilisé seul;
3. Le contenu est différent: throw lève un objet d'exception, et il ne peut en être qu'un; throws est suivi de la classe d'exception, et peut être suivi par plusieurs classes d'exception;
4. Si l'exception est levée à Avec la méthode principale (), la principale méthode ne gère aucune exception, mais les mains à la plus grande machine virtuelle Java en Java, donc si le mot clé throws est utilisé dans la main, cela signifie que toutes les exceptions sont transmises à la JVM pour traitement. La méthode de traitement par défaut est également effectuée par JVM.

3. Les lancers et les lancers doivent-ils apparaître par paires? Veuillez donner un exemple pour illustrer votre
compréhension personnelle: pas nécessairement. Lorsqu'une exception se produit dans un bloc de code dans une méthode et qu'elle n'est pas traitée immédiatement, elle peut être explicitement renvoyée à l'appelant. Pour le moment, nous n'avons besoin que de lancer pour déclarer la méthode; lorsque nous voulons la lancer nous-mêmes, Throw est utilisé lorsqu'une exception se produit. Si l'exception est une exception d'exécution, throws n'est pas obligé de déclarer. Si elle doit détecter une exception, cette méthode nécessite throws à déclarer, et puis il apparaîtra par paires.

4. Pourriez-vous s'il vous plaît noter 10 catégories d'exceptions courantes?

Exception d'exécution commune:

1.NullPointerException: exception de pointeur nul. Lorsque l'application tente d'accéder à un objet vide, l'exception est levée.
2.ClassCastException: exception de conversion de type. Il s'agit d'une exception d'exécution déclenchée par la JVM lorsqu'elle détecte que la conversion entre deux types est incompatible.
3. ArrayIndexOutOfBoundsException: exception de l'index de tableau hors limites. Lorsque vous traitez avec des tableaux, vous devez faire attention à cette exception.
4. ArithmeticException: l'opération arithmétique est anormale. Lorsqu'une condition de fonctionnement anormale se produit, cette exception est levée. Par exemple, lorsqu'un entier est "divisé par zéro", une instance de cette classe est lancée.
5. NumberFormatException: le format des nombres est anormal. Cette exception est levée lorsque l'application tente de convertir une chaîne en type numérique, mais que la chaîne ne peut pas être convertie dans un format approprié. Par exemple, "abc" est converti en type int

Exceptions des exceptions vérifiées courantes:

1.SQLException: la base de données d'opération est anormale. Fournit des exceptions sur les erreurs d'accès à la base de données ou d'autres informations d'erreur, il s'agit d'une exception vérifiée (exception vérifiée).
2. IOException: exception IO. Généralement étroitement lié à la lecture et à l'écriture de fichiers, il est également Checked Exception (checked exception). En général, lisez et écrivez des fichiers, n'oubliez pas de fermer le flux IO!
3. TimeoutException: exception de délai d'expiration de l'opération de blocage. Une opération de blocage qui spécifie un délai d'expiration nécessite un moyen d'indiquer que le délai d'expiration s'est produit. Pour de nombreuses opérations de ce type, une valeur indiquant un délai d'expiration peut être renvoyée; lorsque cela est impossible ou indésirable, une exception TimeoutException doit être déclarée et levée.
4. FileNotFoundException: exception de fichier introuvable. Cette exception est levée lorsqu'une tentative d'ouverture du fichier indiqué par le nom de chemin spécifié échoue. (Sous-classe de IOException).
5. NoSuchMethodException: exception de méthode introuvable.

Remarques finales

Si vous ne comprenez pas ou si GTQ28 a tort, vous pouvez laisser un message ~~~
J'espère communiquer davantage, faire plus attention
pour continuer à apprendre ... pour
rien l a a a a a

Je suppose que tu aimes

Origine blog.csdn.net/zhangzhanbin/article/details/112394449
conseillé
Classement