2013-11-23 24 views
13

Tôi đang cố gắng sử dụng các kết nối following Fastload APIIllegalStateException là gì?

... v.v. là hoàn hảo.


Tôi biết chính xác nơi nó không

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

ngoại lệ là

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

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


Đây là của tôi mà tôi đang cố tải lên. Đó là định dạng .csv và khi tôi mở nó qua notepad, nó trông giống như thế này

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

Tại sao tôi có ngoại lệ này? Làm thế nào tôi có thể cải thiện nó? Theo như tôi hiểu vấn đề là pstmtFld.setAsciiStream(1, dataStream, -1); không chấp nhận tập dữ liệu bằng cách nào đó và ném một ngoại lệ

+1

Tôi thường ném một 'IllegalStateException' bất cứ khi nào tôi bắt được thứ gì đó" không thể xảy ra "và không có loại ngoại lệ mô tả nào khác mà tôi có thể ném. Ví dụ: giả sử tôi viết mã để hiển thị hình ảnh và hình ảnh có độ rộng tiêu cực - việc ném bất kỳ thứ gì khác sẽ tệ hơn, vì vậy tôi có thể viết ngoại lệ không được kiểm soát của riêng mình (thực hành được khuyến nghị), nhưng sau đó bạn có thể xem xét thay vào đó) hoặc sử dụng 'IllegalStateException' được tích hợp sẵn. – tucuxi

+0

Theo http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setAsciiStream%28int,%20java.io.InputStream,%20int%29, có thể là chiều dài tập tin (-1) đang gây ra điều này? – Lopina

Trả lời

22

Thông thường, IllegalStateException được sử dụng để cho biết rằng "một phương pháp đã được gọi vào một thời điểm bất hợp pháp hoặc không phù hợp". Tuy nhiên, điều này không giống như một cách sử dụng đặc biệt điển hình của nó.

Mã bạn đã liên kết đến cho thấy rằng mã có thể được ném trong mã đó tại dòng 259 - nhưng chỉ sau khi bán phá giá SQLException thành đầu ra tiêu chuẩn.

Chúng tôi không thể biết điều gì sai chỉ từ ngoại lệ đó - và mã tốt hơn đã sử dụng SQLException gốc là ngoại lệ "nguyên nhân" (hoặc chỉ để cho ngoại lệ ban đầu lan truyền lên ngăn xếp) - nhưng bạn sẽ có thể xem thêm chi tiết về đầu ra tiêu chuẩn. Nhìn vào thông tin đó, và bạn sẽ có thể thấy những gì gây ra ngoại lệ, và sửa chữa nó.

+0

'đầu ra tiêu chuẩn' là gì? –

+0

@BoratSagddiev: Giống như trong 'Hệ thống.out' - luồng đầu ra tiêu chuẩn từ quy trình của bạn, thường ghi vào bảng điều khiển nếu có một tệp đính kèm hoặc thường được ghi lại dưới dạng tệp nhật ký trong quy trình phía máy chủ. Vì chúng tôi không biết làm thế nào bạn đang chạy mã, thật khó để cho bạn biết nơi để tìm. –

+0

Tôi đã chỉnh sửa câu hỏi. Tôi biết chính xác nơi nó không thành công. 'pstmtFld.setAsciiStream (1, dataStream, -1);' không thực hiện –

0

Ngoại lệ của tiểu bang bất hợp pháp là một ngoại lệ không được kiểm soát.

Nó tăng lên rõ ràng bởi nhà phát triển API để cho biết rằng phương thức đã được gọi vào lúc sai.

dụ:

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

đầu ra:

Runtime Excpetion: IllegalThreadStateException 

Chúng tôi không thể bắt đầu Chủ đề một lần nữa, tit sẽ ném IllegalStateException.

Các vấn đề liên quan