如果未发生错误,则引发异常



我正在使用python3中的Selenium webdriver。当驱动程序到达某个页面时,如果存在具有类shiftUp的某个类元素,我想打印响应并在该点停止执行。目前,我正在这样做如下:

flag = 0
try:
    error_source_file = driver.find_element_by_class_name("shiftUp")
    flag = 1
except:
    pass
if flag:
    print("RESPONSE")
    sys.exit()

我想要一个正确的方法。

使用 else 子句:

try:
    error_source_file = driver.find_element_by_class_name("shiftUp")
except NoSuchElementException:
    pass
else:
    print("RESPONSE")
    sys.exit()
对于

不引发错误的情况,它会触发:https://docs.python.org/3/tutorial/errors.html#handling-exceptions:

try … except语句有一个可选的 else 子句,该子句(如果存在(必须跟在所有 except 子句后面。它对于在 try 子句未引发异常时必须执行的代码很有用。

使用 else 子句比向 try 子句添加其他代码更好,因为它可以避免意外捕获受 try … except 语句保护的代码未引发的异常。

出于类似的原因,我建议只捕获NoSuchElementException:您不想捕获您不打算捕获的错误。

为什么不:

try:
    error_source_file = driver.find_element_by_class_name("shiftUp")
    print("RESPONSE")
    sys.exit()
except NoSuchElementException:
    pass

如果 find_element 方法引发异常,则不会执行 error_source_file 后面的行。

注意:考虑预先确定要捕获的异常类型(例如:except IndexError:(,否则您可能会静默错误,这真的很糟糕。

相关内容

  • 没有找到相关文章

最新更新