спецификаций catch and care c исключений в python - PullRequest
0 голосов
/ 27 мая 2020

Я использую Python 3.7 на Windows 10. Я пытаюсь выполнить:

def A():
    try:
        # do something

    except Exception as e:
        print("Error: %s." % e)

def B():
    try:
        # do something else

    except Exception as e:
        print("Error: %s." % e)

Я хочу «поймать» некоторые специфические c ошибки, такие как 404 Client Error и другие, и отправить их в функцию, которая обрабатывает ситуацию, а затем вернуться к предыдущему состоянию в коде. Как я могу это сделать?

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Вот как я бы это сделал
определил все исключения, которые мне небезразличны

class ClientException(Exception):
    pass

class Exception404(ClientException):
    pass

class Exception500(ClientException):
    pass

def A():
    try:
        # do something
        raise Exception404()
    except ClientException as e:
        print("Error: %s." % e)

def B():
    try:
        # do something else
        raise Exception500()
    except ClientException as e:
        print("Error: %s." % e)

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

0 голосов
/ 27 мая 2020
class ClientError(Exception):
    pass

def a():
    try:
        raise ClientError("boo!")
    except Exception as e:
        print(e)
    print("All fine now")

Посмотрите, как поток продолжается после блока try - except?

>>> a()
boo!
All fine now
...