In realtà, dipende dal tuo modello di dominio. Perché utilizzi un Either
in primo luogo? In generale, il fatto che un record per un particolare ID non venga trovato perché il record non esiste, è un risultato normale ma il record non viene trovato perché il DB non esiste non è. Quindi, ha certamente senso trattare i due casi in modo diverso, cioè restituire un Either
nel primo caso e generare un'eccezione nel secondo.
Naturalmente, in un'applicazione distribuita o mobile, la perdita della connessione DB potrebbe essere normale. E quando si utilizza il DB solo come stoccaggio stupido e la gestione di tutte le relazioni nella propria applicazione, non trovando un record che l'applicazione si aspetta che sia, esiste una situazione eccezionale. Tutto dipende dal contesto.