Написание надежного программного обеспечения лучше всего выполнять на самом высоком возможном уровне.
Таким образом, вместо того, чтобы обрабатывать ошибки определенного типа в определенном месте в вашем коде, убедитесь, что если вся операция каким-либо образом завершится с ошибкой, ее можно будет безопасно откатить / проигнорировать, а затем будет автоматически перезапущен позднее и выполнить работу, пропущенную из-за ошибки.
Например, если вы записываете некоторые файлы, вы можете записать их во временный каталог и переименовать каталог после успешной записи файлов; более того, если при последующем запуске вы обнаружите временный каталог, который все еще там, удалите его (при условии, что вы уверены, что в инфраструктуре нет других процессов, использующих его до сих пор).