Краш приложения после неверной авторизации в vk api python3

Всем привет. Подскажите пожалуйста, как можно предотвратить краш приложения при вводе неверных данных пользователя.

else: не помогает try: except: не помогает

 def auth(self):
    ##### Авторизация
        self.username = self.username_text.text()
        self.password = self.password_text.text()
        self.session = vk.AuthSession(app_id=7325127
                                     ,user_login=self.username
                                     ,user_password=self.password
                                     ,scope='wall, photos')
        print(self.session)
        if self.session:
            self.vk_api = vk.API(self.session)
            self.hi_first = self.vk_api.users.get(v=v)[0]['first_name']
            self.hi_last = self.vk_api.users.get(v=v)[0]['last_name']
            self.hi_id = self.vk_api.users.get(v=v)[0]['id']
            self.text_logger.append("Добро пожаловать, " + str(self.hi_first) + "!" + "\n")
            self.text_logger.append("Твой уникальный ID VK: " + str(self.hi_id) + "\n")
            self.text_logger.append("Что будем делать дальше?" + "\n")
        else:
            self.text_logger.append("Войти не удалось! Попробуйте снова")

Вк присылает ответ в консоль:


  File "vk_getter.py", line 37, in auth
    self.session = vk.AuthSession(app_id=7325127
  File "C:\Users\EVA\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk\mixins.py", line 32, in __init__
    self.access_token = self.get_access_token()
  File "C:\Users\EVA\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk\mixins.py", line 69, in get_access_token
    self.login()
  File "C:\Users\EVA\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk\mixins.py", line 108, in login
    raise VkAuthError(message)
vk.exceptions.VkAuthError: Authorization error (incorrect password)

И приложения закрывается само, т.е. как бы я не пытался предотвратить закрытие приложения и вывод ошибки в лог, не получается.


Ответы (1 шт):

Автор решения: mironovmeow

Когда создаётся объект vk.AuthSession, библиотека отправляет запросы для получения access_token. И, при не правильных данных, библиотека возвращает ошибку. Эту ошибку можно обработать при помощи try-catch:

...
self.password = self.password_text.text()
try:
    self.session = vk.AuthSession(
        app_id=7325127,
        user_login=self.username,
        user_password=self.password,
        scope='wall, photos'
    )
except vk.exceptions.VkAuthError as e:
    # Обработка ошибки при необходимости
    print("Ошибка авторизации. Скорее всего вы ввели неправильный логин или пароль")
print(self.session)
...

P.s. За это время вышла библиотека vk v3.0, там используется vk.UserAPI.

→ Ссылка