


Comment utiliser la gestion des exceptions Java UncaughtExceptionHandler
Gestion des exceptions
Exception de thread non interceptée UncaughtException nécessite la gestion d'UncaughtZExceptionHandler
Alors pourquoi devez-vous utiliser UncaughtZExceptionHandler ?
Le thread principal peut facilement capturer le thread, mais le sous-thread ne le peut pas
Comme vous pouvez le voir dans le code ci-dessous, même si le sous-thread lève une exception, le thread principal ne sera pas affecté à all
public class ChildException implements Runnable{ public static void main(String[] args) { new Thread(new ChildException()).start(); for (int i = 0; i < 10; i++) { System.out.println(i); } } @Override public void run() { throw new RuntimeException(); } } /* * Exception in thread "Thread-0" java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.ChildException.run(ChildException.java:14) at java.lang.Thread.run(Thread.java:748) 0 1 2 3 4 5 6 7 8 9 * */
Comme vous pouvez le voir dans le code ci-dessous, même s'il est inutile d'utiliser catch pour intercepter les exceptions de sous-thread
essayez catch pour le thread principal, il n'y a aucun moyen d'attraper le sous-thread -thread exceptions
public class CantCatch implements Runnable { public static void main(String[] args) throws InterruptedException { try { new Thread(new CantCatch(), "thread0").start(); Thread.sleep(300); new Thread(new CantCatch(), "thread1").start(); Thread.sleep(300); new Thread(new CantCatch(), "thread2").start(); Thread.sleep(300); new Thread(new CantCatch(), "thread3").start(); Thread.sleep(300); } catch (RuntimeException e) { System.out.println("catch"); } } @Override public void run() { throw new RuntimeException(); } } /* * Exception in thread "thread0" java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.CantCatch.run(CantCatch.java:22) at java.lang.Thread.run(Thread.java:748) Exception in thread "thread1" java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.CantCatch.run(CantCatch.java:22) at java.lang.Thread.run(Thread.java:748) Exception in thread "thread2" java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.CantCatch.run(CantCatch.java:22) at java.lang.Thread.run(Thread.java:748) Exception in thread "thread3" java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.CantCatch.run(CantCatch.java:22) at java.lang.Thread.run(Thread.java:748) Process finished with exit code 0 * */
Les exceptions peuvent être interceptées par try catch dans la méthode d'exécution, mais particulièrement gênantes, car vous devez essayer manuellement catch dans chaque méthode d'exécution
UncaughtExceptionHandler
Personnaliser UncaughtExceptionHandler
public class MyUncaughtHandler implements Thread.UncaughtExceptionHandler{ private String name; public MyUncaughtHandler(String name) { this.name = name; } @Override public void uncaughtException(Thread t, Throwable e) { Logger logger = Logger.getAnonymousLogger(); logger.log(Level.WARNING, "线程异常" + t.getName(), e); System.out.println(name + "捕获" + t.getName()+ e); } }
Utilisez une classe personnalisée pour attraper des exceptions
public class UseOwnExceptionHandler implements Runnable { public static void main(String[] args) throws InterruptedException { Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtHandler("MyHandler")); // try { new Thread(new UseOwnExceptionHandler(), "thread0").start(); Thread.sleep(300); new Thread(new UseOwnExceptionHandler(), "thread1").start(); Thread.sleep(300); new Thread(new UseOwnExceptionHandler(), "thread2").start(); Thread.sleep(300); new Thread(new UseOwnExceptionHandler(), "thread3").start(); Thread.sleep(300); // } catch (RuntimeException e) { // System.out.println("catch"); // } } @Override public void run() { // try { throw new RuntimeException(); // } catch (RuntimeException e) { // System.out.println("e"); // } } } /* * 一月 29, 2023 11:22:01 上午 com.jx.JavaTest.Thread.Exception.MyUncaughtHandler uncaughtException 警告: 线程异常thread0 java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.UseOwnExceptionHandler.run(UseOwnExceptionHandler.java:24) at java.lang.Thread.run(Thread.java:748) MyHandler捕获thread0java.lang.RuntimeException 一月 29, 2023 11:22:01 上午 com.jx.JavaTest.Thread.Exception.MyUncaughtHandler uncaughtException 警告: 线程异常thread1 java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.UseOwnExceptionHandler.run(UseOwnExceptionHandler.java:24) at java.lang.Thread.run(Thread.java:748) MyHandler捕获thread1java.lang.RuntimeException 一月 29, 2023 11:22:02 上午 com.jx.JavaTest.Thread.Exception.MyUncaughtHandler uncaughtException 警告: 线程异常thread2 java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.UseOwnExceptionHandler.run(UseOwnExceptionHandler.java:24) at java.lang.Thread.run(Thread.java:748) MyHandler捕获thread2java.lang.RuntimeException 一月 29, 2023 11:22:02 上午 com.jx.JavaTest.Thread.Exception.MyUncaughtHandler uncaughtException 警告: 线程异常thread3 java.lang.RuntimeException at com.jx.JavaTest.Thread.Exception.UseOwnExceptionHandler.run(UseOwnExceptionHandler.java:24) at java.lang.Thread.run(Thread.java:748) MyHandler捕获thread3java.lang.RuntimeException Process finished with exit code 0 * */
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

UseFile.CreateEnewFile () toCreateaFileOnlyiFitDoOesn’texist, EvitingoverWriting; 2.Preferfiles.CreateFile () FromNio.2Formodern, SafeFilecreationThatFailSiftheFileExists; 3.UseFileWriterorPrintwriterWistereAdMedimMedimate

Le moyen le plus direct est de rappeler l'emplacement de stockage, généralement dans des dossiers tels que le bureau, les documents, les téléchargements, etc.; S'il ne peut être trouvé, vous pouvez utiliser la fonction de recherche système. Le fichier "manquant" est principalement dû à des problèmes tels que la non-assistance du chemin d'enregistrement, l'écart de mémoire du nom, la cachette de fichier ou la synchronisation du cloud. Suggestions de gestion efficaces: Classifier par projet, temps et type, faites bon usage de l'accès rapide, propres et archives régulièrement et standardiser la dénomination. Windows Recherche et recherche via File Explorer and Task Barar, tandis que MacOS s'appuie sur Finder et Spotlight, ce qui est plus intelligent et plus efficace. La maîtrise des outils et le développement de bonnes habitudes est la clé.

Utilisez le paramètre -cp pour ajouter le pot au ClassPath, afin que le JVM puisse charger ses classes et ressources internes, telles que Java-Cplibrary.jarcom.example.main, qui prend en charge plusieurs pots séparés par semi-colons ou couleurs, et peut également être configuré via des variables d'environnement de ClassPath Variables ou Manifest.mf.

Utilisez le mot-clé Implements pour implémenter l'interface. La classe doit fournir des implémentations spécifiques de toutes les méthodes dans l'interface. Il prend en charge plusieurs interfaces et est séparé par des virgules pour s'assurer que les méthodes sont publiques. Les méthodes par défaut et statiques après Java 8 n'ont pas besoin d'être réécrites.

Vérifiez d'abord si la connexion réseau est normale. Si d'autres sites Web ne peuvent pas être ouverts, le problème est sur le réseau; 1. Effacer le cache et les cookies du navigateur, entrez les paramètres de chrome et sélectionnez Effacer les données de navigation; 2. Fermez l'extension et vous pouvez utiliser le mode sans cicatrice pour tester s'il est causé par des conflits de plug-in; 3. Vérifiez et fermez les paramètres proxy ou VPN pour éviter que la connexion réseau soit interceptée; 4. Réinitialisez les paramètres du réseau Chrome et restaurez la configuration par défaut; 5. Mettre à jour ou réinstaller Chrome vers la dernière version pour résoudre les problèmes de compatibilité; 6. Utilisez d'autres navigateurs pour comparer et tester pour confirmer si le problème n'est que Chrome; Selon des invites d'erreur telles que l'err_connection_timed_out ou err_ssl_protocol_er

JavagenerricsprovideCompile-TimetypePesafetyAndeliminateStingByAllowingTypeParameTersersonClasses, Interfaces et Methods; Wildcards (?,

Les systèmes en temps réel nécessitent des réponses déterministes, car l'exactitude dépend du délai de livraison des résultats; Les systèmes durs en temps réel nécessitent des délais stricts, manqués entraînera des catastrophes, tandis que le temps réel doux permet des retards occasionnels; Des facteurs non déterministes tels que la planification, les interruptions, les caches, la gestion de la mémoire, etc. affectent le calendrier; Le plan de construction comprend la sélection des RTO, l'analyse WCET, la gestion des ressources, l'optimisation matérielle et les tests rigoureux.

Tout d'abord, activez la fonction de mise à l'échelle intégrée du navigateur UC, accédez aux paramètres → Paramètres parcourir → Police et composition ou mise à l'échelle de la page, et sélectionnez un rapport préréglé ou un pourcentage personnalisé; Deuxièmement, vous pouvez forcer la taille de l'affichage de la page en ouvrant ou en pinçant des gestes avec deux doigts; Pour les pages Web qui restreignent la mise à l'échelle, vous pouvez demander la version de bureau du site Web pour déverrouiller les restrictions; Les utilisateurs avancés peuvent également modifier les attributs de la fenêtre en exécutant le code JavaScript dans la barre d'adresse pour obtenir un effet de mise à l'échelle forcé plus flexible.
