В 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;
Зачем мне нужно , чтобы поймать исключение?Почему я получаю ошибку компиляции?