2011-05-29 4 views
5

Je travaillais sur une requête en Java, et je me suis demandé s'il était possible de savoir quel objet avait déclenché une exception.Comment obtenir un objet source Exception

Je sais que si vous faites vos exceptions personnalisées, vous pouvez modifier le constructeur et une référence à l'objet:

public class MyEx extends Throwable { 
    private MyObject object; 

    public MyEx(MyObject o){ 
     super(); 
    } 

    public MyObject getSource(){ 
     return object; 
    } 
} 

mais je ne sais pas s'il existe une autre façon d'attraper qui throwed la exception. Connaissez-vous un autre moyen?

Répondre

4

Si vous voulez juste voir de quelle partie du code une exception est levée, vous avez simple trace de la pile. Vous obtenez cela en appelant printStackTrace() sur une instance d'exception. Cela ne vous donne cependant pas l'instance d'objet exacte qui a déclenché l'exception.

Pour cela, vous devez implémenter une exception personnalisée comme vous l'avez indiqué. Notez que dans certains contextes, il n'existe pas d'instance, comme par ex. une exception générée par une méthode statique

+2

Vous pouvez également utiliser exception.getStackTrace() si vous voulez en faire plus avec la trace de la pile. – Koekiebox