尝试捕捉错误

时间:2012-06-07 20:06:07

标签: java jdbc try-catch

public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/prototypeeop";    
    private static String driverName = "com.mysql.jdbc.Driver";   
    private static String usernsme = "root";   
    private static String pasword = "triala";
    private static Connection con;
    private static String url;

    public static Connection getConnection() {
        try {
            Class.forName(driverName);
            try {
                con = DriverManager.getConnection(url, username, password);
            } catch (SQLException ex) {
                // log an exception. fro example:
                System.out.println("Failed to create the database connection."); 
            }
        } catch (ClassNotFoundException ex) {
            // log an exception. for example:
            System.out.println("Driver not found."); 
        }
        return con;
    }
}

嘿,我正在创建这个类,我得到一个“classnotfound异常永远不会被抛出相应的try语句”?这与我的try和catch块有关,我想知道问题是什么。它表示对于try错误,“未报告的异常java.lang.classnotfound excpetion必须在它被抛出之前被捕获或声明”。

我为明显的问题道歉,但我也是新手,试图抓住障碍。我知道这与我没有声明这种类型的错误有关,因为已经在java.sql包中声明了SQLException;因此,为什么我没有得到错误。 (我在我的代码中包含“import java.sql package”,因为我正在使用JDBC的Connection类)。该类基本上建立一个连接并返回该连接。

3 个答案:

答案 0 :(得分:2)

您的文字很难理解......如果我理解您的问题,可能就是答案:

您必须捕获SQLException,因为DriverManager.getConnection声明它可能抛出此异常。 Class.forName可能抛出ClassNotFoundException,因此您也必须捕获它。但是,您可以使用一个带有两个catch子句的try块而不是两个。

如果你能重新解释这个问题,我想最好的事情就是。

答案 1 :(得分:1)

它将抛出一个ClassNotFoundException异常。只需创建一个新的.java文件,然后查看。 我试过了。将下面的代码复制到一个新的java文件中。

import java.sql.DriverManager;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;

public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/prototypeeop";
    private static String driverName = "com.mysql.jdbc.Driver";
    private static String usernsme = "root";
    private static String pasword = "triala";
    private static Connection con;

    public static Connection getConnection() {
        try {
            Class.forName(driverName);
            try {
                con = (Connection) DriverManager.getConnection("", "", "");
            } catch (SQLException ex) {
                // log an exception. fro example:
                System.out.println("Failed to create the database connection.");
            }
        } catch (ClassNotFoundException ex) {
            // log an exception. for example:
            System.out.println("Driver not found.");
        }
        return con;
    }
}

答案 2 :(得分:0)

如果此代码直接来自您的编辑器,则需要修复此问题

您声明usernsmepasword

private static String usernsme = "root";
private static String pasword = "triala";

但请使用usernamepassword

con = DriverManager.getConnection(url, username, password);

或许将第一行更改为

private static String username = "root";
private static String password = "triala";

这个问题也会消失。

如果此代码不是来自您的编辑器,那么如果您需要帮助,您应该给我们真实的代码。