Об исключениях (C++)

Dec 28, 2011 13:37


Кросспост из блога автора. Комментировать лучше там, но можно и тут

Я не люблю C++-ные exceptions (за второй поток управления), как следствие - стараюсь их не использовать, а если использую, то перехватываю только те, которые порождает мой код. Как следствие, правил хорошего тона в этой области не знаю.
Возник вопрос, как правильно поступать. Вот есть такой примерно код:


  1. int some_class::some_function(std::filebuf& buf)

  2.  

  3.   try {

  4.       ....

  5.       buf.sgetn(....);

  6.       .....

  7.       return 0; // OK

  8.   }

  9.   catch (my_own_exception_type t) {

  10.         аккуратно_склеить_ласты();

  11.         return errorcode;

  12.    }

  13. }
Вопрос: должен ли я в подобном коде ловить исключения, порожденные std::filebuf? Ну там не смог он ничего прочесть? А вообще все исключения? Как требуют понятия хорошего тона?
Должны ли быть эти правила хорошего тона разными в таких двух случаях
  • Этот самый std::filebuf - на самом деле хранится внутри класса, где-то раньше был создан/открыт и все такое. То есть это наш сукин сын.
  • Этот самый IO-хэндл (std::filebuf) передан нам снаружи т.е. это чужой сукин сын.
?
P.S. Нашелся йузер у которого для файлов с SD-читалки не работает std::filebuf IO. Linux, холст, масло....

c++, exceptions, Программирование, libraw

Previous post Next post
Up