2013-11-23 9 views
13

Sto cercando di utilizzare il following Fastload APIChe cos'è IllegalStateException?

connessione ... ecc è perfetto.


so esattamente dove non riesce

........... 
System.out.println(" Streaming " + dataFile); 
pstmtFld.setAsciiStream(1, dataStream, -1); // This line fails 
System.out.println("check the above line"); // This does not go to console 
........... 

eccezione è

Exception in thread "main" java.lang.IllegalStateException: Sample failed.

[ODBC Teradata Driver] Invalid precision: cbColDef value out of range


Qui è la mia tabella che sto cercando di caricare. Si tratta di un formato .csv e quando l'ho aperto con blocco note apparire come questo

1,9,Win 
2,9,Winc 
3,9,Wi 

Perché ricevo questa eccezione? Come posso migliorarlo? Per quanto ne so il problema è pstmtFld.setAsciiStream(1, dataStream, -1); non accetta il set di dati in qualche modo e genera un'eccezione

+1

Generalmente lancio un 'IllegalStateException' ogni volta che prendo qualcosa che "non può mai accadere" e non c'è altro tipo di eccezioni più descrittivo che posso lanciare. Ad esempio, supponiamo che scrivo codice per visualizzare un'immagine e che l'immagine abbia una larghezza negativa, lanciando qualcos'altro sarebbe peggio, quindi posso scrivere la mia eccezione non controllata (pratica consigliata, ma potresti considerare di fare un'eccezione controllata invece), o usare quello incorporato 'IllegalStateException'. – tucuxi

+0

Secondo http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setAsciiStream%28int,%20java.io.InputStream,%20int%29, è possibile che il la lunghezza del file (-1) sta causando questo? – Lopina

risposta

22

Solitamente, IllegalStateException viene utilizzato per indicare che "un metodo è stato richiamato in un momento illegale o inappropriato". Tuttavia, questo non sembra un uso particolarmente tipico di esso.

Il codice che hai collegato al dimostra che può essere gettato all'interno di quel codice alla riga 259 - ma solo dopo il dumping un SQLException sullo standard output.

Non possiamo dire cosa c'è che non va proprio da quell'eccezione - e un codice migliore avrebbe usato l'originale SQLException come eccezione "causa" (o lasciare che l'eccezione originale si propagasse nello stack) - ma dovresti essere in grado di vedere più dettagli sullo standard output. Guarda queste informazioni e dovresti essere in grado di vedere cosa ha causato l'eccezione e risolverlo.

+0

cos'è un 'output standard'? –

+0

@BoratSagddiev: come in 'Sistema.out' - lo stream di output standard del processo, in genere scrivendo su una console se ce n'è uno allegato o spesso acquisito come file di registro in un processo lato server. Poiché non sappiamo come stai eseguendo il codice, è difficile dirti dove cercare. –

+0

Ho modificato la domanda. So esattamente dove fallisce. 'pstmtFld.setAsciiStream (1, dataStream, -1);' non esegue –

0

Eccezione di stato illegale è un'eccezione Unchecked.

Aumenta esplicitamente dallo sviluppatore API per indicare che il metodo è stato richiamato in un momento sbagliato.

esempio:

Thread t = new Thread(); 
t.start(); 
// 
// 
t.start(); 

uscita:

Runtime Excpetion: IllegalThreadStateException 

Non possiamo riavviare la discussione, tit getteremo IllegalStateException.

Problemi correlati