Обработка исключений 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 шт):

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

Не очень понятно, зачем тут вообще 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
→ Ссылка
Автор решения: timur

Можно воспользоваться функцией sys.exit:

import sys

# какой-то код

except Exception as e:
    print(e)
    sys.exit(1)
→ Ссылка