【问题标题】:Best way to check if condition or exception is thrown检查是否抛出条件或异常的最佳方法
【发布时间】:2019-02-16 11:14:54
【问题描述】:

现在我有一个除了字符串之外的函数,如果用户也应该不返回任何内容:

  • 不传入字符串OR
  • 对参数执行操作时引发特定异常

这是我的做法:

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
    ...

我只是想知道是否有更清洁的方法来做到这一点。就像我是否可以检查传入的参数是否为字符串并检查操作是否在同一行抛出异常?

【问题讨论】:

  • 将非字符串对象传递给phonenumbers.parse() 时会发生什么?在这种情况下会抛出什么异常?也许它仍然会抛出 phonenumbers.phonenumberutil.NumberParseException,或者抛出 TypeErrorValueError,你可以在同一行 except 中捕获它们..

标签: python if-statement exception


【解决方案1】:

我认为这可能是在 Python 中最合理的方法。尝试操作然后在没有明确定义的行为的对象上捕获异常的缺点是它们可以被您调用的函数修改。检查它是否是已知类型,即str,就像您在此处所做的那样,如果是,那么尝试该操作会将各种奇怪的行为保持在最低限度,同时仍然返回有效结果或错误(None 在此案例)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2011-09-21
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多