Я не люблю 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 - на самом деле хранится внутри класса, где-то раньше был создан/открыт и все такое. То есть это наш сукин сын.
- Этот самый IO-хэндл (std::filebuf) передан нам снаружи т.е. это чужой сукин сын.
P.S. Нашелся йузер у которого для файлов с SD-читалки не работает std::filebuf IO. Linux, холст, масло....