Предположим, что я использую библиотеку X
, которая указывает, например, что exception.BaseError
является базовым классом для всех исключений X
.
Теперь есть еще одно исключение, скажем, X.FooError
, которое, конечно, наследует от exception.BaseError
, но более обобщенно, скажем, что оно обрабатывает неверный ввод. Предположим, есть много других таких классов, наследующих от BaseError
, но все для обобщенных случаев.
X
|
BaseError
|
FooError
Итак, я хочу проверить правильность ввода. Так какое исключение я должен поймать? Конечно, перехват каждого отдельного исключения невозможен, поэтому я ловлю X.BaseError
и затем печатаю сообщение об ошибке. Или я могу поймать X.FooError
специально, но тогда я пропускаю все другие случаи ошибок.
Это стандартный способ сделать это - поймать базовое исключение? Если да, то почему существуют другие исключения? Для обобщенного случая, когда мы хотим отловить конкретное исключение?