Java没有给出错误!

Rub*_*bee 2 java mysql database odbc jdbc

这是我的代码 - 我只是检查我的MySQL数据库连接.
但首先我已成功编译并运行该程序.但后来我评论了Class.forName这一行.
仍然当我编译它运行成功,没有任何错误.为什么?

import java.sql.Connection;
import java.sql.DriverManager;


public class FirstJbdc {
    public static void main(String[] args) {
        Connection cn=null;
        try {
            //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("Driver loaded successfully");
            cn=DriverManager.getConnection("jdbc:odbc:myDSN","root", "java");
            System.out.println("Database connected successfully....");
            System.out.println(cn);
        } catch (Exception e) {
            // TODO: handle exception
                        e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*een 8

我抛出一个错误,好吧.只是那个

catch (Exception e){
     // here the exception is instantiated, but nothing is done about it
}
Run Code Online (Sandbox Code Playgroud)

子句默默地吞下你的例外.

试试吧

System.out.println( e.getMessage() );
Run Code Online (Sandbox Code Playgroud)

在catch子句中


Pet*_*aný 7

即使不使用Class.forName,Java 1.6也可以找到JDBC驱动程序.

以下是文档的相关部分:

DriverManager方法getConnectiongetDrivers已得到增强,支持Java标准版服务提供商的机制.JDBC 4.0驱动程序必须包含该文件META-INF/services/java.sql.Driver.此文件包含JDBC驱动程序实现的名称java.sql.Driver.例如,要加载my.sql.Driver类,META-INF/services/java.sql.Driver文件将包含以下条目:

my.sql.Driver
Run Code Online (Sandbox Code Playgroud)

应用程序不再需要使用Class.forName()明确加载JDBC驱动程序.当前使用Class.forName()加载JDBC驱动程序的现有程序将继续工作而无需修改.