Потому что вы можете перехватить только подклассы указанного исключения. В вашем случае эти два неверны:
isinstance(CustomException3(), CustomExceptionALL) # False
issubclass(CustomException3, CustomExceptionALL) # False
(потому что вы пытаетесь поймать CustomExceptionALL
, но CustomException3
не CustomExceptionALL
, а наоборот)
Вместо этого вы можете использовать кортеж классов:
CustomExceptionALL = (CustomException1, CustomException2, CustomException3)
isinstance(CustomException3(), CustomExceptionALL) # True
issubclass(CustomException3, CustomExceptionALL) # True
try:
raise CustomException3
except CustomExceptionALL as e:
print("CustomExceptionALL") # This prints
except Exception as e:
print(e)