在 class 方法中引发异常的语法无效

invalid syntax for raising an exception inside a class method

我试图在 class 方法中 raise 一个 AttributeError,这个方法的想法是如果 apply_buttonNone 那么应用例外,否则单击按钮。

但是当我执行以下代码时:

import pyautogui
import os

def apply_button_detector(self):
        
    apply_button=pyautogui.locateOnScreen(os.path.join(ROOT_DIR, r'apply_button.png'), region=(1, 300, 500, 700))
           
    if apply_button is None:
        try:
           print('no apply button')
           raise AttributeError()
                            
    else:
          # click on Apply button
           apply_button_location=pyautogui.center(apply_button)
           pyautogui.click(apply_button_location)

它在 raise AttributeError():

标记了我的错误

invalid syntax ()

如何调整函数以 return AttributeError?

您已将 raise 放入 try 块中,但尝试需要异常处理程序。这就是 try 的用途——区分将由一个或多个 exceptfinally 处理程序处理的代码。只需删除 try。此外,由于 raise 中断当前执行,因此没有理由为剩余代码设置 else。将那部分排除在外更具可读性。最后,输出看起来有点奇怪,因为 raise 包含您需要的信息。我把信息性消息移到了那里。

import pyautogui
import os

def apply_button_detector(self):
        
    apply_button=pyautogui.locateOnScreen(os.path.join(ROOT_DIR, r'apply_button.png'), region=(1, 300, 500, 700))
           
    if apply_button is None:
         raise AttributeError('no apply button')
    # click on Apply button
    apply_button_location=pyautogui.center(apply_button)
    pyautogui.click(apply_button_location)