Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2015 11:30:06

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка ошибок (исключений)

Доброго времени суток, уважаемые!
Подскажите пожалуйста, как можно обработать конкретную ошибку, к примеру, есть ошибка:

sqlite3.OperationalError: table users already exists
но так же может возникнуть и ошибка:
sqlite3.OperationalError: database is locked

При помощи exception я могу обработать только тип ошибки (sqlite3.OperationalError). А как мне правильно обработать конкретную ошибку, что бы предпринять соответствующие действия?
Спасибо.

Офлайн

#2 Фев. 10, 2015 11:58:29

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

Обработка ошибок (исключений)

Можно получить экземпляр исключения и проверять какая конкретная ошибка возникла.

Офлайн

#3 Фев. 10, 2015 12:15:51

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Обработка ошибок (исключений)

не знаю правильно ли, но другого способа я не знаю

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!!!"



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Фев. 10, 2015 12:40:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Обработка ошибок (исключений)

>>> 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
>>>



Офлайн

#5 Фев. 10, 2015 13:07:06

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка ошибок (исключений)

Всем большое спасибо за помощь!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version