По какой-то причине мой код не перехватывает исключения, когда я его бросаю. У меня естьPython not catching exception
def trim_rad(rad):
...
if not modrad.shape[0]:
raise IndexError("Couldn't find main chunk")
return modrad, thetas
Тогда позже я называю эту функцию:
try:
modrad, thetas = trim_rad(rad)
except IndexError("Couldn't find main chunk"):
return 0
Но я до сих пор получить отслеживающий с этим исключением. Что я делаю не так?
Вы должны только указать имя типа, а не экземпляр типа. Если вы хотите еще больше сузить его, чтобы обрабатывать только специальный 'IndexError', который вы будете бросать и оставляете обычные оле' IndexErrors' в одиночку, создайте более узкий тип исключения, который наследуется от 'IndexError' и поднимет/поймает это. –
Я удивлен, что это не TypeError. Я думал, что попробовал «за исключением 1:' раньше и получил TypeError, но, попробовав его сейчас, он просто проходит. – user2357112
@ user2357112 Очевидно, это вызывает TypeError в Python 3: http://ideone.com/yy4XAy. Вы правы, хотя это не имеет значения в 2.x –