所以我在代码中遇到了这个问题,我想知道这意味着什么。
Java代码:
public object name(Connection connection) throws SQLException
{
try {
//something
}
catch (Exception e) {
//something
}
}
所以我的问题是,是否有人知道在下列情况下是否会抛出SQLException并捕获任何其他异常?
答案 0 :(得分:0)
如果catch块没有抛出SQLException,并且如果try-catch块之外没有任何东西抛出SQLException,那么不,这个实现不会抛出SQLException。
在某些情况下,在签名中声明SQLException仍然有效,例如。如果你想要赋予覆盖此方法的子类,则抛出SQLException的可能性。
答案 1 :(得分:0)
try和catch块允许您覆盖一组程序语句的默认错误行为。如果try块中的任何语句生成错误,程序控制将立即转到catch块,该块包含错误处理语句。
答案 2 :(得分:0)
全部取决于//something
public object name(Connection connection) throws SQLException
{
try {
//something1
}
catch (Exception e) {
//something
}
//something2
}
如果//something1
是[{1}}的原因,那么它将会被SQLException
(//某事物)捕获?
如果catch
是[{1}}的原因,那么它将被投放到//something2
的来电者
答案 3 :(得分:0)
此:
throws SQLException
对此没有任何影响:
try {
//something
}
catch (Exception e) {
//something
}
这两个结构彼此不了解"。
throws
子句声明整个方法可能抛出SQLException
,但由于你的try-catch块捕获了所有SQLException
,该方法可能不会锻炼该选项。如果您希望传播SQLException
,但要抓住并处理其他人,您可以考虑编写
try {
// something
} catch (SQLException e) { throw e; }
} catch (Exception e) { /* something */ }
答案 4 :(得分:0)
public void methodName(Connection connection) throws SQLException {
try {
...
// This SQLException will be caught by the catch block
throw new SQLException();
...
// This OtherException will be caught by the catch block
// as OtherException extends Exception
throw new OtherException();
...
} catch (Exception e) {
...
// This SQLException will be thrown by the method
throw new SQLException();
...
// This will cause a compile error as methodName
// throws SQLException but not OtherException or
// the more generic Exception
throw new OtherException();
...
}
}