Я пытаюсь выяснить, как обрабатывать ошибки в Room. У меня есть следующий интерактор, который вставляет задачу в базу данных:
TaskInteractor.java
public class TaskInteractor extends AbstractInteractor implements TaskContract.Interactor {
final TaskRepository mRepository;
interface Callback {
void onSuccess();
void onFailure(Throwable t);
}
@Inject
public TaskInteractor(WorkerThread workerThread,
MainThread mainThread,
TaskRepository repository) {
super(workerThread, mainThread);
this.mRepository = repository;
}
@Override
public void insertTask(final Task task, final Callback callback)
throws SQLiteException {
mWorkerThread.get().execute(new Runnable() {
@Override
public void run() {
try {
mRepository.insertTask(task);
} catch (SQLiteException exeption) {
Timber.e("Insertion failed. Exception: " + exeption.getMessage());
callback.onFailure(exeption);
throw exeption;
}
Timber.d("Insertion succeeded.");
callback.onSuccess();
}
});
}
}
В insertTask
я использую блок try-catch, чтобы проверить, произошло SQLiteException
событие SQLiteException
. Если это так, я делаю исключение. Но разве это хороший способ обработки ошибок или, может быть, лучший способ?