【问题标题】:Is it possible to use an "OR" logical operator in a Try/Exceptions Error handling in Python [duplicate]是否可以在 Python 的 Try/Exceptions 错误处理中使用“OR”逻辑运算符 [重复]
【发布时间】:2022-01-16 19:30:27
【问题描述】:

假设我有一个使用tryexcept 子句的代码来捕获Python 中的错误:

try:
    some_action = print('Please answer my question')

except OSError:
    print("Error occured")
except ValueError:
    print("Error occured")
except BaseException:
    print("Error occured")

是否可以使用OR 逻辑运算符以任何方式组合except 子句,例如以这样的方式:

try:
   some_action = print('Please answer my question')

except OSError or ValueError or BaseException:
   print ("Error occured")

我试图研究 Python documentationexcept 子句上,但我没有找到任何可以帮助我回答这个问题的东西。

也许允许 OR 用于错误处理可能是违反直觉的,因为人们更愿意选择性地处理异常,但我认为在某些情况下,使用 OR 运算符可以使代码稍微更优雅。

例如,可以在 if/elif 语句中使用 OR 运算符:

for i in x:
    if A in i:
        pass
    elif B in i:
        pass
    elif C in i:
        pass
    else:
        print ('no A, B, or C in X')

可以简化为:

for i in x:
    if A in i or B in i or C in i:
       pass
    else:
       print ('no A, B, or C in X') 

【问题讨论】:

标签: python try-catch logical-operators


【解决方案1】:

来自Python Documentation

一个except子句可以将多个异常命名为带括号的元组,例如

    except (OSError, ValueError) as e:
        pass

在那里添加BaseException 没有意义,因为它是所有异常的基类。

【讨论】:

  • 好吧,使用except (OSError, ValueError) xor except BaseError 是有意义的
猜你喜欢
  • 2023-03-12
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多