guava Cache'u kullanmak için bazı kodları yeniden yapıyorum.Guava önbelleğini ve denetlenen istisnaları koruma
Başlangıç kodu: sarma olmadan ben olduğu gibi herhangi bir istisnayı korumak için gereken şey, kırmamaya amacıyla
public Post getPost(Integer key) throws SQLException, IOException {
return PostsDB.findPostByID(key);
}
.
Güncel çözüm biraz çirkin görünür: bu güzel yapar için olası bir yol
public Post getPost(final Integer key) throws SQLException, IOException {
try {
return cache.get(key, new Callable<Post>() {
@Override
public Post call() throws Exception {
return PostsDB.findPostByID(key);
}
});
} catch (ExecutionException e) {
Throwable cause = e.getCause();
if (cause instanceof SQLException) {
throw (SQLException) cause;
} else if (cause instanceof IOException) {
throw (IOException) cause;
} else if (cause instanceof RuntimeException) {
throw (RuntimeException) cause;
} else if (cause instanceof Error) {
throw (Error) cause;
} else {
throw new IllegalStateException(e);
}
}
}
var mı?
. Ama bu açıklığa kavuşturdu: http://meta.stackexchange.com/questions/2706/posting-and-answering-questions-you-have-already-found-the-answer-to – Vadzim
Ve teşekkür ederim, guava çocuklar! – Vadzim
Yani ** ** geçerli cevap olarak işaretleyin;) – Xaerxess