是否所有异常都从 JdbiException 类型的 Jdbi 抛出?
Are all exceptions throw from Jdbi of type JdbiException?
这里说:
https://jdbi.org/apidocs/org/jdbi/v3/core/JdbiException.html
那 JdbiException
就是 Base unchecked exception for exceptions thrown from jdbi.
但是,如果我使用各种不同的回调调用 withHandle
方法:
jdbi.withHandle(handle -> handle
.createQuery("...")
.mapTo(String.class)
.one());
文档声明它抛出 X extends Exception
(而不是像我预期的那样抛出 JdbiExecption
)并将其描述为 @param <X> exception type thrown by the callback, if any.
:
public <R, X extends Exception> R withHandle(HandleCallback<R, X> callback) throws X {
我想知道调用 withHandle
并只捕获 JdbiException
而不是必须捕获 Exception
是否安全?
try {
jdbi.withHandle(handle -> ...);
} catch (JdbiException e) {
// Will this catch everything thrown from `withHandle`?
}
X extends Exception
的重点是针对您的 代码,而不是 JDBI 的代码。您自己编写的代码(在->
之后)可以抛出X
.
JDBI 确实会抛出 JdbiExceptions,并且不会抛出任何其他东西。但是 YOUR CODE 可能例如抛出 IOException 或诸如此类的东西。
这个有效:
try {
jdbi.withHandle(handle -> throw new IOException());
} catch (IOException e) {}
要做到这一点,这就是 <X extends Exception>
的意义所在。
这里说:
https://jdbi.org/apidocs/org/jdbi/v3/core/JdbiException.html
那 JdbiException
就是 Base unchecked exception for exceptions thrown from jdbi.
但是,如果我使用各种不同的回调调用 withHandle
方法:
jdbi.withHandle(handle -> handle
.createQuery("...")
.mapTo(String.class)
.one());
文档声明它抛出 X extends Exception
(而不是像我预期的那样抛出 JdbiExecption
)并将其描述为 @param <X> exception type thrown by the callback, if any.
:
public <R, X extends Exception> R withHandle(HandleCallback<R, X> callback) throws X {
我想知道调用 withHandle
并只捕获 JdbiException
而不是必须捕获 Exception
是否安全?
try {
jdbi.withHandle(handle -> ...);
} catch (JdbiException e) {
// Will this catch everything thrown from `withHandle`?
}
X extends Exception
的重点是针对您的 代码,而不是 JDBI 的代码。您自己编写的代码(在->
之后)可以抛出X
.
JDBI 确实会抛出 JdbiExceptions,并且不会抛出任何其他东西。但是 YOUR CODE 可能例如抛出 IOException 或诸如此类的东西。
这个有效:
try {
jdbi.withHandle(handle -> throw new IOException());
} catch (IOException e) {}
要做到这一点,这就是 <X extends Exception>
的意义所在。