Поймать 2 исключения и использовать «как» не работает, как ожидалось - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь поймать два исключения следующим образом:

class TestException:
    def __init__(self):
        self.x = [1, 2, 3]

def main():
    test_exception = TestException()
    try:
        test_exception.y[1] = 4.0
    except (IndexError, AttributeError) as e:
        raise e('Why does this not work?')

if __name__ == '__main__':
    main()

но я получаю следующую ошибку:

TypeError: объект 'AttributeError' не может быть вызван

Почему это происходит? Потому что следующие штрафы работают:

raise AttributeError('This does work!')

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 июня 2019

Исходя из @jonrsharpe, отлично работает следующее:

raise type(e)('This works now.')

или

raise Exception('This works now.') from e
...