什么是非法状态异常?

2022-09-01 00:55:09

我正在尝试使用以下快速加载 API

连接。。。等等都很完美。


我确切地知道它在哪里失败

 ...........
 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用于指示“在非法或不适当的时间调用了某个方法”。但是,这看起来并不像是它的特别典型的用法。

您链接到的代码显示,它可以在第 259 行的该代码中引发 - 但只有在转储到标准输出之后。SQLException

我们无法仅从该异常中判断出了什么问题 - 更好的代码会将原始异常用作“原因”异常(或者只是让原始异常向上传播堆栈) - 但您应该能够看到有关标准输出的更多详细信息。查看该信息,您应该能够看到导致异常的原因,并修复它。SQLException


答案 2

IllegalStateException 表示方法在错误的时间被调用。在下面的示例中,我们可以看到该方法正在改变一个元素,而它的迭代器处于循环中(非法调用),Java捕获并抛出该循环:remove()

package com.concepttimes.java;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class IllegalStateExceptionDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List al = new ArrayList();
        al.add("Sachin");
        al.add("Rahul");
        al.add("saurav");
        Iterator itr = al.iterator();  
        while (itr.hasNext()) {           
            itr.remove();
        }
    }
}

详情请参阅以下连结。http://www.elitmuszone.com/elitmus/illegalstateexception-in-java/


推荐