1
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 之前捕获或声明它”。

对于明显的问题,我深表歉意,但我也是尝试捕捉障碍的新手。我知道这与我没有声明此类错误有关,因为 SQLException 已在 java.sql 包中声明;因此,为什么我没有收到错误。(我在代码中包含“import java.sql package”,因为我使用的是 JDBC 连接类)。该类基本上建立了一个连接并返回该连接。

4

3 回答 3

2

你的文字很难理解......如果我正确理解你的问题,这可能是答案:

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

我想最好的办法是你能重新解释这个问题。

于 2012-06-07T20:10:35.057 回答
1

It will throw a ClassNotFoundException exception. Just create a new .java file and see. I have tried it.Copy the below code into a new java file.

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;
    }
}
于 2012-06-07T20:17:04.733 回答
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";

这个问题也会消失。

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

于 2012-06-07T20:20:46.637 回答