Найти - Пользователи
Полная версия: Обработка ошибок (исключений)
Начало » Python для новичков » Обработка ошибок (исключений)
1
vladimirse
Доброго времени суток, уважаемые!
Подскажите пожалуйста, как можно обработать конкретную ошибку, к примеру, есть ошибка:
sqlite3.OperationalError: table users already exists
но так же может возникнуть и ошибка:
sqlite3.OperationalError: database is locked

При помощи exception я могу обработать только тип ошибки (sqlite3.OperationalError). А как мне правильно обработать конкретную ошибку, что бы предпринять соответствующие действия?
Спасибо.
alex925
Можно получить экземпляр исключения и проверять какая конкретная ошибка возникла.
terabayt
не знаю правильно ли, но другого способа я не знаю
except sqlite3.OperationalError as e:
    if e.message.startswith('table') and e.message.endswith('already exists'):
        print ":("
    elif e.message == 'database is locked':
        print "LOCKED!!!"
py.user.next
>>> try:
...     raise ValueError('abc')
... except ValueError as e:
...     print(type(e), e, str(e) == 'abc', str(e) == 'def')
...     print(hasattr(e, 'message'))
... 
<class 'ValueError'> abc True False
False
>>>
vladimirse
Всем большое спасибо за помощь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB