IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

StackTrace : récupération donnes


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 25
    Par défaut StackTrace : récupération donnes
    Bonjour à vous,
    Je débute en java, et j'ai un petit souci sur une StackTrace que j'ai mis en place.
    Le problème vient du fait qu'il me retourne des lignes et des lignes d'exception. Du coup ma pop up est très grande et quasi inutilisable.

    Je voulais savoir comment faire pour récupérer que les 30 dernières lignes ??
    Voila la classe créée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    package eu.efa.commons;
     
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.io.Writer;
     
    public class EfaStackTrace {
     
    	public static String stringify ( Throwable exn ) {
    		StringWriter str = new StringWriter();
    		PrintWriter pw = new PrintWriter( str );
    		pw.println( exn.getClass().getName () );
    		pw.println( String.valueOf( exn.getMessage() ) );
    		pw.println( dup( "====", 20 ) );
    		exn.printStackTrace( pw );
    		pw.println( dup( "====", 20 ) );
    		if( exn.getCause() != null ) {
    			pw.println( stringify( exn.getCause() ) ); }
    		return str.toString(); }
     
    	private static String dup ( String motif, int count ) {
    		StringWriter os = new StringWriter();
    		PrintWriter pw = new PrintWriter( os );
    		while( count-- > 0 ) {
    			pw.print( motif ); }
    		return os.toString(); }
     
    	private static class Exn extends Exception {
    		private static final long serialVersionUID = -1L;
    		public Exn () {
    			super(); } }
     
    	private static void badComputationAux ()  {
    		try {
    			throw new Exn(); }
    		catch( Exception exn ) {
    			throw new RuntimeException( exn ); } }
     
    	public static void main ( String[] args ) {
    		try {
    			badComputationAux(); }
    		catch( Throwable exn ) {
    			System.err.println( EfaStackTrace.stringify( exn ) ); } } 
    }
    Pourriez vous me dire comment récupérer uniquement les 30 dernières lignes ?
    Merci.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la méthode getStackTrace() de Throwable te retourne la liste des éléments du stacktrace individuels, tu n'a plus qu'à parcourir les 30 premier pour les afficher.

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 25
    Par défaut
    Merci pour ton retour !
    J'ai avancé, en fait j'ai changé car j'ai toujours pas les messages que je veux...
    Donc j'ai demandé qu'il me remonte les messages commencant uniquement par eu.efa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public static String stringify ( Throwable exn ) {
    		StringWriter str = new StringWriter();
    		PrintWriter pw = new PrintWriter( str );
    		pw.println( exn.getClass().getName () );
    		pw.println( String.valueOf( exn.getMessage() ) );
    		pw.println( dup( "====", 20 ) );
     
    		exn.printStackTrace( pw );
     
    		StackTraceElement[] frames = exn.getStackTrace();
    		List<StackTraceElement> pertainingFrames = framesOnlyInGivenPackage( frames, "eu.efa" );
    		for( int i = 0; i < pertainingFrames.size(); i++ ) {
    		    pw.println( String.valueOf( pertainingFrames.get( i ) ) ); }
     
    		pw.println( dup( "====", 20 ) );
    		if( exn.getCause() != null ) {
    			pw.println( stringify( exn.getCause() ) ); }
    		return str.toString(); }
     
    	private static List<StackTraceElement> framesOnlyInGivenPackage ( StackTraceElement[] elts, String packagePrefix ) {
    	    return new LinkedList<StackTraceElement>(); }
    Mais cela ne fonctionne pas... Une idée ??

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par jicaygg Voir le message
    Mais cela ne fonctionne pas..
    Dès que je retrouve ma boule de cristal je résous ton problème.

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 25
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Dès que je retrouve ma boule de cristal je résous ton problème.
    Ca serait fort sympathique de ta part
    Histoire qu'il me reste qques cheveux !!

Discussions similaires

  1. HELP récupération données formulaire
    Par liichiii dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 00h29
  2. probleme récupération donnée dans script xsl
    Par jmacdev dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/05/2006, 17h37
  3. Récupération données formulaire en php5
    Par jcaspar dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2006, 20h45
  4. Récupération données en registre
    Par cgoln dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/12/2005, 11h05
  5. Réponses: 3
    Dernier message: 13/09/2005, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo