Лучший способ проверить, выбрасывается ли условие или исключение - PullRequest
0 голосов
/ 12 сентября 2018

Прямо сейчас у меня есть функция, которая исключает строку и должна возвращать ее, если пользователь тоже:

  • не передается в строке ИЛИ
  • при выполнении операции с аргументом выдается конкретное исключение

Вот как я это делаю:

def fnctn(num_str):
    if not isinstance(num_str, str):
        return None
    try:
        num = phonenumbers.parse(num_str, 'US')
    except phonenumbers.phonenumberutil.NumberParseException:
        return None
    ...

Мне просто интересно, есть ли более чистый способ сделать это. Например, если бы я мог проверить, был ли переданный аргумент строкой, и проверить, вызывает ли операция исключение или нет в той же строке?

1 Ответ

0 голосов
/ 12 сентября 2018

Думаю, это наиболее разумный способ сделать это на Python. Недостатком выполнения операций и перехвата исключений для объектов, которые не имеют четко определенного поведения, является то, что они могут быть изменены вызываемой вами функцией. Проверка, является ли это известным типом, то есть str, как вы делаете здесь, и если это так, то попытка операции сводит виды странного поведения к минимуму, все еще возвращая верный результат или ошибку (None в этом случай).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...