Tôi đang tái cấu trúc một số mã để sử dụng guava Cache.Bộ nhớ cache ổi và lưu giữ các ngoại lệ đã kiểm tra
mã ban đầu:
public Post getPost(Integer key) throws SQLException, IOException {
return PostsDB.findPostByID(key);
}
Để không phá vỡ một cái gì đó tôi cần phải duy trì bất kỳ ngoại lệ ném như là, mà không cần gói nó.
giải pháp hiện tại dường như hơi xấu xí:
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);
}
}
}
Có cách nào có thể làm cho nó đẹp hơn?
Ngừng nếu câu hỏi tự trả lời được đăng hoàn toàn. Nhưng điều này đã làm cho nó rõ ràng: http://meta.stackexchange.com/questions/2706/posting-and-answering-questions-you-have-already-found-the-answer-to – Vadzim
Và cảm ơn bạn, những người ổi! – Vadzim
Vì vậy hãy đánh dấu nó là ** câu trả lời hợp lệ **;) – Xaerxess