2010-06-21 3 views
3

Quand j'exécute le code ci-dessous, je vois la sortie comme:java trace d'exception

Enfin

Exception dans le thread "principal" java.lang.NullPointerException à ClientTestConcepts.main (ClientTestConcepts .java: 9)

Qui imprime les instructions en gras.

public class ClientTestConcepts { 
    public static void main(String []args){ 
     try{ 
      throw new NullPointerException(); 
     } 
     finally{ 
      System.out.println("Finally"); 
     } 
    } 
} 

Répondre

7

L'exécution Java.

Il récupère toutes les exceptions non traitées dans le code utilisateur et les imprime sur la sortie d'erreur (par défaut).

+0

Que se passe-t-il si je l'attrape? – JavaUser

+0

@JavaUser, quoi que vous fassiez dans le bloc 'catch' :-) Si vous l'attrapez dans' main' et que vous ne le réécrivez pas, le runtime ne le verra pas. –

3

Chaque thread possède un gestionnaire d'exceptions non intercepté par défaut qui s'exécute lorsqu'une exception le place en haut de la pile. Celui que vous observez est fourni par ThreadGroup.uncaughtException:

Appelé par la machine virtuelle Java quand un thread dans ce groupe de threads cesse en raison d'une exception non interceptée, et le fil ne dispose pas d'un Thread.UncaughtExceptionHandler spécifique installé.

La méthode uncaughtException de ThreadGroup effectue les opérations suivantes: (...)
... un message contenant le nom, retournée par la méthode getName du fil du fil, et une trace de la pile, en utilisant la méthode printStackTrace du Throwable, est imprimé dans le flux d'erreur standard.

Si vous souhaitez un autre comportement, enregistrez un gestionnaire d'exceptions non interceptées pour le thread.

+0

L'utilisation de ThreadGroup est obsolète. – Bozho

+0

Tout d'abord, ce n'est pas l'utilisateur qui utilise ThreadGroup. Deuxièmement, c'est ce qui se passe. Que ce soit obsolète ou non (je dirais que ce n'est pas le cas, car il est encore très utilisé), c'est ce qui provoque le comportement de l'utilisateur maintenant. Pas de magie dans le runtime Java. –

+0

BTW si quelqu'un sait comment réparer ce lien, je serais ravi. Il est interprété correctement dans le volet de prévisualisation, donc je pense que c'est un bug SO. –