2013-11-23 8 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 संकेत मिलता है कि प्रयोग किया जाता है फेंक है "एक विधि एक अवैध या अनुचित समय में लागू किया गया है।" हालांकि, यह इसके विशेष रूप से विशिष्ट उपयोग की तरह नहीं दिखता है।

आपके द्वारा लिंक किया गया कोड दिखाता है कि इसे को उस कोड पर लाइन 25 9 पर फेंक दिया जा सकता है - लेकिन मानक आउटपुट में SQLException डंप करने के बाद ही।

हम यह नहीं बता सकते कि उस अपवाद से क्या गलत है - और बेहतर कोड मूल कारण SQLException को "कारण" अपवाद के रूप में उपयोग करेगा (या केवल मूल अपवाद को ढेर को फैलाने दें) - लेकिन आपको सक्षम होना चाहिए मानक आउटपुट पर अधिक जानकारी देखें। उस जानकारी को देखें, और आपको यह देखने में सक्षम होना चाहिए कि अपवाद का कारण क्या है, और इसे ठीक करें।

+0

'मानक आउटपुट' क्या है? –

+0

@ बोरात सैग्डिव: 'सिस्टम में जैसा।आउट' - आपकी प्रक्रिया से मानक आउटपुट स्ट्रीम, आमतौर पर एक कंसोल पर लिखते हैं, यदि एक संलग्न है, या अक्सर सर्वर-साइड प्रक्रिया में लॉग फ़ाइल के रूप में कब्जा कर लिया जाता है। चूंकि हम नहीं जानते कि आप कोड कैसे चला रहे हैं, आपको यह बताना मुश्किल है कि कहां देखना है। –

+0

मैंने प्रश्न संपादित किया है। मुझे पता है कि यह वास्तव में कहां विफल रहता है। 'pstmtFld.setAsciiStream (1, डेटास्ट्रीम, -1); ' –

0

अवैध राज्य अपवाद एक अनचेक अपवाद है।

यह एपीआई डेवलपर द्वारा स्पष्ट रूप से उगता है यह इंगित करने के लिए कि गलत समय पर विधि लागू की गई है।

उदाहरण:

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

उत्पादन:

Runtime Excpetion: IllegalThreadStateException 

हम नहीं कर सकते फिर से धागा शुरू, तैसा IllegalStateException फेंक देते हैं।

संबंधित मुद्दे