public DBConn()
{
try
{//注册数据库驱动程序
Class.forName(sDBDriver).newInstance();
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println(e.getMessage());
}
}
----------------------------------
为什么我把.newInstance()去掉,程序没问题,而有的话,出现如下错误:
未报告的异常,java.lang.InstantiationException;必须对于进行捕捉或声明以便抛出。

解决方案 »

  1.   

    你会catch(java.lang.ClassNotFoundException e)
    就不会catch(java.lang.InstantiationException e)??
      

  2.   

    如果你的Driver类没有不带任何参数的构造函数,调用newInstance()方法就会抛出java.lang.InstantiationException
      

  3.   

    有一点要注意,如果在你的Driver类里面没有显示地定义任何构造函数,那么Java会默认生成一个不带任何参数的构造函数,但一旦定义了一个构造函数,Java就不会生成这个不带任何参数的构造函数,看样子是你的这个Driver类定义了带参数的构造函数
      

  4.   

    Driver类,是什么意思?我不知道他带参数了没有。
    如果在jsp文件中,我在Class.forName(..)后头加.newInstance(),程序不出错。
    上面的程序是在一个.java文件中,我编译时如果带.newInstance(),就如上的错误。
      

  5.   

    try
    {//注册数据库驱动程序
    Class.forName(sDBDriver).newInstance();
    }
    catch(java.lang.Exception e)
    {
    System.err.println(e.getMessage());
    }newInstance()这个方法不仅仅抛出classnotfound这个异常,还有其他的异常
    要一并处理了。
      

  6.   

    ClassA.newInstance()这个方法会生成一个ClassA对象的类的对象,但是前提是这个类里有一个缺省的无参数构造器。象Chinajash() 说的那样,估计你的sDBDriver类里写了一个带参数的构造器,没有缺省的构造器而产生了这个错误
      

  7.   

    Driver类,是什么意思?我不知道他带参数了没有。To matrix1984,Driver类指的是sDBDriver这个类,如果不知道它是否有不带参数的构造函数,可以反编译一下这个类,或者用反射去访问这个Driver类
      

  8.   

    注册驱动本本就不应该用newInstance();