LINUX.ORG.RU

обработка исключительный ситуаций


0

0

Как вы обычно организуете работу с исключительными ситуациями в ваших
приложениях? Мне ничего более умного в голову не приходит, как создание
на каждый большой класс своего специфического исключения. Типа так:

<module_A.py>
class A_exception:
  ...
class A:
  ...


<module_B.py>
class B_exception:
  ...
class B:
  ...


<module_C.py>
class C_exception:
  ...
class C:
  ...


<module_ABC.py>:
class ABC_exception:
  ...


  ...
  try:
    <использование модулей A, B, C>
  except module_A.A_exception:
    ...
    raise ABC_exception (..., 'такая-то ошибка в модуле A', ...)
  except module_B.B_exception:
    ...
    raise ABC_exception (..., 'такая-то ошибка в модуле B', ...)
  except module_C.C_exception:
    ...
    raise ABC_exception (..., 'такая-то ошибка в модуле C', ...)
  ...

И я этих исключений столько наплодил, что все растет мысль, что что-то
не так. Может вы максимально используете стандартные исключения? Но как
узнавать тогда где-именно возникла ошибка. Сам я выхода из этой ситуации
не вижу. Поделитесь опытом, как именно вы организуете работу с
исключительными ситуациями.

Спасибо.
anonymous
Ответ на: комментарий от DonkeyHot

А вообще рассказать как лучше использовать исключения можно? Создавать свои или использовать стандартные? Мне интересно как делаете это вы (поподробнее :)

anonymous
()
Ответ на: комментарий от anonymous

Есть такой слоган "let it fail" (если склероз мне не измеяет). По определению, исключения нужны в исключительных(непредусмотренных) случаях (-:за исключением штатных исключений, о которых ниже:-). Потому я использую 1 тип обработки "исключений" - print_exc()(с вариациями типа потом raise или exit). В этом случае всё равно, плодить свои или использовать чужие - всё равно за пределы бросающихся модулей их имена не вылазят.

Если же ты планируешь, что кто-то будет их разумно обрабатывать - ты разрабатываешь API, и вряд ли тут есть единственно правильный подход. Даже "API должен быть простой" оспаривается аргументами "а в нашем навороченом редакторе есть автодополнение".

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.