1
シングルトンクラスを理解するためのデータベースクラスを作成しました。報告されていない例外SQLExceptionがキャッチされる、またはスローされると宣言する必要があります
コール
private Connection con = ConnectionManager.getConnection();
Netbeansのは、私が
public static Connection getConnection() throws SQLException {
boolean read = ReadFromConfig();
if (read == true) {
try {
con = DriverManager.getConnection(urlstring, user, pass);
} catch (SQLException ex) {
throw new SQLException("Connection failed: " + ex);
}
}
return con;
}
'getConnection()'の 'try-catch'ブロックは役に立たないだけでなく、有害です。それは元の 'SQLException'を破壊し、その理由に関する情報を失っています。 'getConnection()'を呼び出すコードで例外を処理する必要があります。 – Kayaman
私はあなたが新しい例外を作成していると思います: "新しいSQLExceptionをスローする("失敗しました: "+ ex);"私はこの行を次のように置き換えます: "** System.out.println(" Connection failed: "); ex.printStackTrace(); **"これを行うと、最初の(そして真の)例外が維持され、コンソールは到達した場合にエラーを出力します。 – Amnor
_your_ 'getConnection'のシグネチャは、SQLExceptionをスローする可能性があることをコンパイラに伝えます。このコードをtry catchブロックにカプセル化する必要があります(SQLExceptionをスローする' DriverManager.getConnection'と同じように)。しかし、これはキャッチして新しいものを投げるのは悪いデザインです。 – AxelH