Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Salvare uno stacktrace

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    6

    Salvare uno stacktrace

    Ciao a tutti. Mi servirebbe salvare uno stacktrace generato da una mia applicazione e mandarlo ad un'altra classe. Così ho inserito il codice che dovrebbe catturare lo stacktrace nel catch. Ho provato sia

    ex.getStackTrace().toString();
    //che
    ex.fillInStackTrace().toString();

    ma non mi restituiscono l'intero Stacktrace. La prima espressione dovrebbe essere un array..ho provato a farlo scorrere in un for ma non funziona.
    Sapreste suggerirmi il modo corretto?

  2. #2
    vuoi salvare il messaggio della eccezione? nel caso prova con

    codice:
    try {
    
    // ooops
    
    } catch (Exception ex) {
    
    String msg = ex.getMessage();
    
    ....
    
    }

    altrimenti se ti serve proprio accedere agli StackTraceElement[] conviene accedere ai metodi getFileName / getLineNumber / getMethod direttamente senza pasasre dal toString e costruirti ad hoc una stringa rappresentatiava..

    spero di aver capito cosa intendevi
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    6
    Avevo provato anche con getMessage ma mi restituisce unicamente un numero.
    Ora stavo dando un'occhiata ai metodi di StackTraceElement[] per capire come utilizzarli.
    Mi sapresti dare qualche suggerimento in merito?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Domanda... perchè non passi direttamente la Exception? Così ti eviti tanti problemi...

    Se ti interessa solo il testo dello StackTrace, puoi passare all'altra classe una stringa contenente tutto lo StackTrace, esattamente come viene stampato a video:
    codice:
    ByteArrayOutputStream exout = new ByteArrayOutputStream();
    e.printStackTrace( new PrintStream(exout) );
    String stack = exout.toString();
    In questo modo, nella variabile "stack", avrai lo StackTrace esattamente come appare a video.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    6
    Grazie mille!! In questo modo ho risolto!!
    Poi ho anche visto i metodi getClassName(), getLineNumber() e getMethodName() che mi possono essere utili per le operazioni successive!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.