Обработка исключений try except
Тема вопроса - обработка исключений. Подскажите, я под каждую ситуацию сделал обработку с try и excpet. И если пользователь вводит неверное число - вылезает надпись: "Неверный ввод". Круто, работает. Но если этот ввод не удовлетворяет сразу нескольким условиям, то эта надпись пишется несколько раз. Как можно сделать так, чтобы вывелось одно сообщение и на этом программа остановилась? По типу break. Пример:
class Error1(Exception):
pass
class Error2(Exception):
pass
class Error3(Exception):
pass
password = input()
try:
if len(password) < 4:
raise Error1('error')
else:
print('Пароль верный')
except Exception as e:
print(e)
try:
if password.startswith('0'):
raise Error2('error')
else:
print('Пароль верный')
except Exception as e:
print(e)
try:
if '@' in password:
raise Error3('error')
else:
print('Пароль верный')
except Exception as e:
print(e)
Если пароль неверный, то это выводится несколько раз. Как вывести только 1 раз результат? Т.е. ERROR или пароль верный
Ответы (2 шт):
Не очень понятно, зачем тут вообще exception, но раз хотите:
try:
if len(password) < 4:
raise Error1('error')
elif password.startswith('0'):
raise Error2('error')
elif '@' in password:
raise Error3('error')
else:
print('Пароль верный')
except Exception as e:
print(e)
Если структуру try/catch менять нельзя и надо напечатать все возможные эксепшены, а не только один, но можно при этом хотя бы что-то в коде поменять, то можно сделать так:
def is_good_password(password):
try:
if len(password) < 4:
raise Error1('error')
except Exception as e:
print(e)
return False
try:
if password.startswith('0'):
raise Error2('error')
except Exception as e:
print(e)
return False
try:
if '@' in password:
raise Error3('error')
except Exception as e:
print(e)
return False
print('Пароль верный')
return True
Можно воспользоваться функцией sys.exit:
import sys
# какой-то код
except Exception as e:
print(e)
sys.exit(1)