Внесите обработку всех ошибок в наиболее подходящий контекст.
Если выходит проблема чтения/записи диска, ее нужно делать в том коде, который занимается доступом к диску. Для обработки данной ошибки может потребоваться сгенерировать другую ошибку, передав ее на более высокий уровень. Это говорит о том, что на каждом уровне программы ошибка должна быть точным описанием проблемы в его контексте.
Не имеет смысла обрабатывать ошибку, связанную со сбоем диска, в коде интерфейса для пользователей (публичная часть).
Самодокументируемый код помогает всем зрителям (и публичная часть и административная часть) понять, где возникла ошибка в данный момент.
Не выводите сообщения об ошибках, которые бессмысленны.