给定以下代码:我们需要锁定模型,然后启动一个事务(这可能会引发异常,因此我们必须确保释放锁),然后执行类似于获取数据库连接的操作(这可能会引发异常),然后做一些可能引发需要还原事务的异常的事情。这是 Java 6,所以我们没有可用的 Java 7 好东西。
SomeClass someMethod()
throws SomeException {
acquireWriteLock();
try {
startTransaction();
try {
DBConnection d = openDBConnection();
try {
doStuff(d);
commitTransaction();
} finally {
d.close();
}
} catch (SomeException e) {
handleSomeException(e);
revertTransaction();
throw e;
} catch (Throwable t) {
revertTransaction(); // Error: method must return a value of SomeClass
}
} finally {
releaseWriteLock();
}
}
可以将其重写为更具可读性和更少冗长吗?
只是为了好玩:当您看到以下内容时,您会怎么做?
DBConnection d = null;
try {
acquireWriteLock();
startTransaction();
d = openDBConnection();
try {
doStuff(d);
commitTransaction();
} catch (SomeException e) {
handleSomeException(e);
revertTransaction();
}
} finally {
d.close();
releaseWriteLock();
}