Мне трудно понять это, это об ошибках, которые можно сделать при вызове исключения в 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
сообщение здесь «исключения должны быть классами в старом стиле или производными from BaseException, а не int" - почему это интерпретируется как возбуждение int, а не кортежа?
Кроме того:
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-й случаи и, возможно, указать мне код в интерпретаторе, который отвечает за это?