Я ищу хороший способ написать код с исключениями, если я хочу игнорировать их в куске кода.
Рассмотрим
bool ClearAllCaches() {
bool success = ClearPersistentCache();
success &= ClearTransientCache();
success &= ClearRemoteCache();
return success;
}
Если эти функции выбрасывали, а не возвращали значение успеха, и я также хочу перебросить любое исключение, что один из этих бросков, но только после того, как все выполнено, есть ли более чистое решение, чем это?
void ClearAllCaches() {
MyException persistentException = MyException(ErrorCode::None);
try {
ClearPersistentCache();
} catch (const MyException& e) {
persistentException = e;
}
//...same for ClearTransientCache()
ClearRemoteCache(); // <- does not have to be caught.
if (persistentException.getCode() != ErrorCode::None) {
throw persistentException;
}
//...same for ClearTransientCache()
}
Можно ли написать это читабельным и не слишком уродливым образом?