Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [Java]Varie Exception

  1. #1
    Utente di HTML.it L'avatar di ilGuglia
    Registrato dal
    Dec 2015
    residenza
    Sicilia
    Messaggi
    46

    [Java]Varie Exception

    Lavorando su di un programmino in java mi restituisce java.lang.NullPointerException quando assegno ad una variabile il valore di un Object (formattato in stringa tramite decimalFormat). Il punto è che se quest'object fosse null dovrebbe dare errore 50 righe sopra quando ci faccio delle operazioni matematiche.
    Precedentemente a questo, però, mi dava errore dicendo che non potevo usare la variabile Object come Numerica (nonostante il casting fosse corretto), una volta modificato il codice nuovamente mi da l'errore di NullPointer su citato.

    In tutto ciò c'è da dire che se uso in ambiente di test lo stesso codice non da alcun problema in nessuno dei casi che, nella versione definitiva, hanno dato problemi

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un po' di codice per capire meglio la situazione?


    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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ilGuglia Visualizza il messaggio
    Lavorando su di un programmino in java mi restituisce java.lang.NullPointerException quando assegno ad una variabile il valore di un Object (formattato in stringa tramite decimalFormat).
    Non è molto chiaro .... senza vedere bene il codice. NullPointerException non salta fuori ad un assegnamento ma quando si tenta di accedere ad un campo/metodo su un reference che vale null.

    Puoi mostrare qualche pezzetto di codice?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di ilGuglia
    Registrato dal
    Dec 2015
    residenza
    Sicilia
    Messaggi
    46
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non è molto chiaro .... senza vedere bene il codice. NullPointerException non salta fuori ad un assegnamento ma quando si tenta di accedere ad un campo/metodo su un reference che vale null.

    Puoi mostrare qualche pezzetto di codice?

    codice:
    for (i = 0; i < flag; i++) {
                raw[i][0] = rawData[i][0];
                raw[i][1] = rawData[i][1];
                raw[i][2] = this.decimalFormat.format((((BigInteger) rawData[i][2]).doubleValue()/1000.));
                raw[i][3] = this.decimalFormat.format(((((BigInteger) rawData[i][2]).doubleValue()/1000.))-(Math.round(((Double) rawData[i][4]) / 1000.)));
                raw[i][4] = this.decimalFormat.format((Double) rawData[i][4]);
                raw[i][5] = this.decimalFormat.format((Double) rawData[i][5]);
                raw[i][6] = this.decimalFormat.format((Double) rawData[i][6]);
            }
    La riga in grassetto è quella che da errore. Il flag è maggiore di 0 se vengono passati dei valori a rawData, ciò implica che non possa essere null, ma anche se così fosse, se rawData fosse null dovrebbe dare errore una cinquantina di righe sopra quando faccio questo

    codice:
     rawData[j][2] = ((BigInteger) rawData[j][2]).add((BigInteger) record[2]);
      rawData[j][4] = (Double) rawData[j][4] + (Math.round(((Double) record[3]) / 1000.));
    record[] è una variabile Object che contiene il risultato di una query
    Ultima modifica di ilGuglia; 29-01-2016 a 19:36

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ilGuglia Visualizza il messaggio
    raw[i][2] = this.decimalFormat.format((((BigInteger) rawData[i][2]).doubleValue()/1000.));
    In questa riga, le uniche cose che tecnicamente possono causare un NPE sono:
    - che raw sia null (ma se così fosse salterebbe fuori già due righe sopra alla assegnazione a raw[i][0])
    - che il campo decimalFormat sia null
    - che rawData sia null
    - che il valore a rawData[i][2] sia null (perché poi ci invochi .doubleValue() )

    Dato che la espressione dà un double il format invocato è format(double), quindi non ci sono problemi su questo.

    Posso solo fare ipotesi ... devi verificare tu. I tool di debug e l'attività di debugging servono proprio a questo.
    Ultima modifica di andbin; 29-01-2016 a 23:59
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di ilGuglia
    Registrato dal
    Dec 2015
    residenza
    Sicilia
    Messaggi
    46
    Credo che il problema non stia tanto nel codice quanto nel risultato della query.
    Nell'ambiente di test il database contiente informazioni differenti e meno aggiornate, ho notato che se nella versione definitiva provo con date uguali a quelle dell'ambiente di test fa tutto come deve, con date recenti no (le date le passo alla query per prendermi i dati)
    Provo a modificare il codice in base ai risultati più recenti del db e vediamo...

  7. #7
    Utente di HTML.it L'avatar di ilGuglia
    Registrato dal
    Dec 2015
    residenza
    Sicilia
    Messaggi
    46
    Ho trovato il problema (l'ho trovato sabato però mi ero dimenticato di scriverlo)
    Praticamente nel ciclo sovrastante dove andavo ad aggiungere righe o (in base agli if) a sommare i dati con righe precedenti avevo dimenticato di sistemare l'indice, così difatti se torni ad aggiungere cose nelle righe soprastanti ti crea la riga all'indice successivo al prossimo ciclo lasciando quella all'indice attuale vuota e sbem che ti perdi in errori che non sai dove stanno

    In ambiente di test non si verificava l'errore per semplice (o dovrei dire sfiga?)

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.