Мне сложно определить это, о ошибках, которые могут быть сделаны при создании исключения в Python 2.7:
try:
raise [1, 2, 3, 4]
except Exception as ex:
print ex
сообщение здесь: "Исключения должны быть классами старого стиля или производными от BaseException, а не списком". Эта часть в порядке, но когда я меняю ее на кортеж, меня путают:
try:
raise (1, 2, 3, 4)
except Exception as ex:
print ex
сообщение здесь: "Исключения должны быть классами старого стиля или производными от BaseException, а не int" - почему это интерпретируется как повышение int, а не кортежа?
Futhermore:
try:
raise (Exception, 'a message')
except Exception as ex:
print ex
Здесь мы фактически поднимаем Exception (последовательное поведение по сравнению с предыдущим примером, где мы поднимаем int) - я кратко подумал, что это просто альтернативный способ для этого:
try:
raise Exception, 'a message'
except Exception as ex:
print ex
Но в этом случае сообщение "сообщение" передается в Исключения ctor (как описано на docs.python.org)
Может кто-нибудь объяснить 2-й и 3-й случаи, и возможно ли указать мне код в интерпретаторе, который отвечает за это?