在IntelliJ中,我正在编写一些从Google Cloud DataStore检索实体的代码,使用像这样的
try
catch
块。
try {
T dataAccessObject = class.newInstance();
entity = datastore.get(KeyFactory.createKey(dataAccessObject.GetEntityName().toString(), id));
dataModel = (T)dataAccessObject.ToModel(entity);
return dataModel;
} catch (EntityNotFoundException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
catch 对我来说,EntityNotFoundException 的空语句是一种代码气味,我宁愿删除它并允许抛出异常。
然而,当我删除这个catch语句时,它导致了一个编译器错误,而且我没有看到任何解释或理由来说明为什么删除这个语句是无效的。
datastore.get 正在调用实现了com.google.appengine.api.datastore.DatastoreService 接口的东西,这意味着有可能抛出一个EntityNotFoundException ,如果我们看一下接口中定义的构造函数,就可以看到这一点。
com.google.appengine.api.datastore.DatastoreService
public interface DatastoreService extends BaseDatastoreService {
Entity get(Key var1) throws EntityNotFoundException;
但为什么我需要捕捉这个异常呢?为什么会出现编译错误?