Кросспост из
блога автора. Комментировать лучше
там, но можно и тут
Я не люблю C++-ные exceptions (за второй поток управления), как следствие - стараюсь их не использовать, а если использую, то перехватываю только те, которые порождает мой код. Как следствие, правил хорошего тона в этой области не знаю.
Возник вопрос, как правильно поступать. Вот есть такой примерно код:
int some_class::some_function(std::filebuf& buf)
try {
....
buf.sgetn(....);
.....
return 0; // OK
}
catch (my_own_exception_type t) {
аккуратно_склеить_ласты();
return errorcode;
}
}
Вопрос: должен ли я в подобном коде ловить исключения, порожденные std::filebuf? Ну там не смог он ничего прочесть? А вообще все исключения? Как требуют понятия хорошего тона?
Должны ли быть эти правила хорошего тона разными в таких двух случаях
- Этот самый std::filebuf - на самом деле хранится внутри класса, где-то раньше был создан/открыт и все такое. То есть это наш сукин сын.
- Этот самый IO-хэндл (std::filebuf) передан нам снаружи т.е. это чужой сукин сын.
?
P.S. Нашелся йузер у которого для файлов с SD-читалки не работает std::filebuf IO. Linux, холст, масло....