9
votes

Comment simuler une exception non gérée en Java

Je crée un code multi-threadé et j'ai créé une classe JobDisPatcher qui crée des threads. Je veux que cet objet traite toutes les exceptions non gérées dans les threads ouvrier, et j'utilise donc

Thread.setUncaughtExceptionHandler(this);


0 commentaires

4 Réponses :


15
votes

Il suffit de lancer une exception.

E.g.: xxx

complet: xxx


6 commentaires

Eclipse ne me laissera pas compiler lorsque je le fais - il insiste sur le fait que je m'entourdis d'essayer d'essayer / attraper. Savez-vous comment changer ce comportement?


Cela devrait compiler. Ressemble à un contrôle supplémentaire spécifique à l'éclipse.


Eclipse peut se plaindre si vous avez un autre code dans une méthode après le lancement de l'exception, faites-en la seule / dernière ligne de la méthode.


@Martin, vous devriez être capable de cliquer avec le bouton droit de la souris sur la ligne où l'exception non gérée est survenue et dit à Eclipse de l'ignorer.


Utilisez si (vrai) jette nouvelle RunTimeException ("MELP"); ele Eclipse / Javac se plaindre en effet du code inaccessible. Notez qu'il existe une différence de compilateur subtile entre Runtime Exception et une exception "normale".


@Balus, à peu près sûr que c'est une question spécifique à l'éclipse. J'ai posté un exemple qui jette toujours, n'a pas de conditionnellement et compile dans Javac.



6
votes

Quel est le problème avec juste lancer une exception: xxx

à l'intérieur de votre méthode d'exécution. Et bien sûr, ne pas l'attraper. Il devrait déclencher votre gestionnaire.


0 commentaires

6
votes

Vous devez lancer une exception décochée . Une exception non cochée ne nécessite pas que votre code le gère et est donc un bon candidat à faire jusqu'au bout de la pile d'appels.

Vous pouvez choisir runtimédiexception par exemple, ou même quelque chose comme assertionError , si vous souhaitez minimiser les chances que certaines parties du code attrapent l'exception et les gère avant Il atteint votre gestionnaire.


0 commentaires

0
votes

Il suffit d'ajouter ce code et vous obtiendrez une exception non gérée sans erreur de lante: xxx


0 commentaires