2013-11-23 13 views
13

私は使用しようとしていますfollowing Fastload APIIllegalStateExceptionとは何ですか?

接続などが完璧です。


それは

........... 
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 
........... 

例外が

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

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


ここに私がある障害が発生した場所を正確に私が知っています私がアップロードしようとしているテーブル。それは.csvフォーマットであり、私はメモ帳を経由して、それを開いたとき、私はこの例外を得るのですか、なぜそれがこの

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

のように見えますか?どうすれば改善できますか?私の知る限りでは、pstmtFld.setAsciiStream(1, dataStream, -1);は何とかデータセットを受け入れずに例外をスローします。

+1

私はたぶん "起こりえない"ということをキャッチするたびに私は 'IllegalStateException'を投げます。私が投げることのできる他の説明的な例外タイプはありません。例えば、画像を表示するコードを書いて、画像の幅が負の場合 - 他のものを投げると悪化するため、私は自分の未チェックの例外を書き込むことができます(推奨されている方法ですが、代わりに組み込みの 'IllegalStateException'を使用してください)。 – tucuxi

+0

http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setAsciiStream%28int,%20java.io.InputStream,%20int%29によると、ファイル長(-1)はこれを引き起こしていますか? – Lopina

答えて

22

通常「IllegalStateExceptionは、メソッドが不正または不適切な時間に呼び出されたことを示すために使用されます。しかし、これは特に典型的な使用のようには見えません。

コードにはのコードが259行でスローされることが示されていますが、SQLExceptionを標準出力にダンプしてからでなければなりません。

その例外から何が間違っているのかわかりません。元のSQLExceptionを「原因」例外として使用した方が良いでしょう(または元の例外をスタックに伝播させるだけです)。標準出力の詳細を参照してください。その情報を見て、あなたは例外の原因を見ることができ、それを修正できるはずです。

+0

'標準出力 'とは何ですか? –

+0

@BoratSagddiev: 'Systemと同じです。あなたのプロセスからの標準的な出力ストリームであり、通常、コンソールに接続されているものがある場合はコンソールに書き込むか、サーバ側のプロセスではログファイルとして取り込まれる場合があります。コードをどのように実行しているのかわからないので、どこを見ていくのが難しいです。 –

+0

質問を編集しました。私はそれがどこで失敗するのか正確に知っている'pstmtFld.setAsciiStream(1、dataStream、-1);'が実行されない –

0

不正な状態の例外は未チェックの例外です。

API開発者によって明示的に呼び出され、間違ったタイミングでメソッドが呼び出されたことを示します。

例:

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

出力:

Runtime Excpetion: IllegalThreadStateException 

我々は再びスレッドを開始カント、TITはIllegalStateExceptionがスローされます。

関連する問題