java 无法访问 SQLException 的 catch 块
java Unreachable catch block for SQLException
我想在 Foo
方法的 try-catch 块 上捕获 SQLException
,这是我的代码,但实际上不起作用;
public int Foo() {
try {
DB.delete("table", "fname=" + name);
} catch (SQLException e) {
LOGGER.log(Level.WARNING, e.getMessage());
}
}
public int delete(String table, String conditions) {
int updatedRow = 0;
try {
String sql = "DELETE FROM " + table + " SET " + " WHERE " + conditions;
updatedRow = SPM_Database.opeStmt.executeUpdate(sql);
} catch (SQLException ex) {
System.out.println("message" + ex);
LOGGER.log(Level.WARNING, ex.getMessage());
}
return updatedRow;
}
我的 IDE 中的 Foo() 方法中的 catch-block 出现错误,即;
Unreachable catch block for SQLException
这个异常永远不会从 try 块中抛出。为什么我不能使用 try-catch 块?我需要从 delete() 函数或任何想法中抛出 SQLException
吗?
您的 delete
方法永远不会抛出 SQLException
,因为它没有在 throws
子句中声明它。因此,您在 Foo
中的 catch 子句无法访问。
您不需要从 delete
方法中抛出 SQLException
,但您也不需要用 try 块包围对 delete
的调用,并且您不需要不需要赶上 SQLException
.
方法 delete 需要抛出异常,以便 Foo 可以捕获它。
public int delete(String table, String conditions) throws SQLException{
int updatedRow = 0;
String sql = "DELETE FROM " + table + " SET " + " WHERE " + conditions;
updatedRow = SPM_Database.opeStmt.executeUpdate(sql);
return updatedRow;
Foo保持原样。
祝你好运!
在您需要做的事情完成后,在您的 catch 块中添加一个 throw
语句。而且你还需要在你的方法签名上添加throws SQLException
。
public int delete(String table, String conditions) throws SQLException { // signature is changed
int updatedRow = 0;
try {
String sql = "DELETE FROM " + table + " SET " + " WHERE " + conditions;
updatedRow = SPM_Database.opeStmt.executeUpdate(sql);
} catch (SQLException ex) {
System.out.println("message"+ ex);
LOGGER.log(Level.WARNING, ex.getMessage());
throw ex; // <== ADD THIS LINE
}
return updatedRow;
}
我想在 Foo
方法的 try-catch 块 上捕获 SQLException
,这是我的代码,但实际上不起作用;
public int Foo() {
try {
DB.delete("table", "fname=" + name);
} catch (SQLException e) {
LOGGER.log(Level.WARNING, e.getMessage());
}
}
public int delete(String table, String conditions) {
int updatedRow = 0;
try {
String sql = "DELETE FROM " + table + " SET " + " WHERE " + conditions;
updatedRow = SPM_Database.opeStmt.executeUpdate(sql);
} catch (SQLException ex) {
System.out.println("message" + ex);
LOGGER.log(Level.WARNING, ex.getMessage());
}
return updatedRow;
}
我的 IDE 中的 Foo() 方法中的 catch-block 出现错误,即;
Unreachable catch block for
SQLException
这个异常永远不会从 try 块中抛出。为什么我不能使用 try-catch 块?我需要从 delete() 函数或任何想法中抛出 SQLException
吗?
您的 delete
方法永远不会抛出 SQLException
,因为它没有在 throws
子句中声明它。因此,您在 Foo
中的 catch 子句无法访问。
您不需要从 delete
方法中抛出 SQLException
,但您也不需要用 try 块包围对 delete
的调用,并且您不需要不需要赶上 SQLException
.
方法 delete 需要抛出异常,以便 Foo 可以捕获它。
public int delete(String table, String conditions) throws SQLException{
int updatedRow = 0;
String sql = "DELETE FROM " + table + " SET " + " WHERE " + conditions;
updatedRow = SPM_Database.opeStmt.executeUpdate(sql);
return updatedRow;
Foo保持原样。
祝你好运!
在您需要做的事情完成后,在您的 catch 块中添加一个 throw
语句。而且你还需要在你的方法签名上添加throws SQLException
。
public int delete(String table, String conditions) throws SQLException { // signature is changed
int updatedRow = 0;
try {
String sql = "DELETE FROM " + table + " SET " + " WHERE " + conditions;
updatedRow = SPM_Database.opeStmt.executeUpdate(sql);
} catch (SQLException ex) {
System.out.println("message"+ ex);
LOGGER.log(Level.WARNING, ex.getMessage());
throw ex; // <== ADD THIS LINE
}
return updatedRow;
}