如何在 python 中捕获外部异常?
How to catch an external exception in python?
我正在编写一个简单的 python 脚本来移动鼠标,我正在使用 pyautogui 来完成它。 脚本必须同时适用于 Windows 和 Linux。问题是when i use linux Xlib raise Xlib.error.DisplayConnectionError。为了解决这个问题,我使用 try/catch 子句导入 pyautogui,但我不知道如何捕获 Xlib.error.DisplayConnectionError。
作为解决方法,我正在使用 except Exception:
,但它不是很好:
import os
try:
import pyautogui as pag
except Exception:
os.system("xhost +SI:localuser:root")
import pyautogui as pag
我已经看过了:
但我无法在 Windows 上导入 Xlib。
一个解决方案似乎是:
import os
if 'DISPLAY' in os.environ:
import Xlib
try:
import pyautogui as pag
except Xlib.error.DisplayConnectionError:
os.system("xhost +SI:localuser:root")
import pyautogui as pag
else:
import pyautogui as pag
但它令人困惑、冗长且难以阅读。
您可以捕获一般异常,然后简单地检查它的具体类型,而无需导入外部模块:
try:
import
except Exception as e:
if e.__type__ == '':
#do things...
else:
#do other things...
我正在编写一个简单的 python 脚本来移动鼠标,我正在使用 pyautogui 来完成它。 脚本必须同时适用于 Windows 和 Linux。问题是when i use linux Xlib raise Xlib.error.DisplayConnectionError。为了解决这个问题,我使用 try/catch 子句导入 pyautogui,但我不知道如何捕获 Xlib.error.DisplayConnectionError。
作为解决方法,我正在使用 except Exception:
,但它不是很好:
import os
try:
import pyautogui as pag
except Exception:
os.system("xhost +SI:localuser:root")
import pyautogui as pag
我已经看过了:
但我无法在 Windows 上导入 Xlib。
一个解决方案似乎是:
import os
if 'DISPLAY' in os.environ:
import Xlib
try:
import pyautogui as pag
except Xlib.error.DisplayConnectionError:
os.system("xhost +SI:localuser:root")
import pyautogui as pag
else:
import pyautogui as pag
但它令人困惑、冗长且难以阅读。
您可以捕获一般异常,然后简单地检查它的具体类型,而无需导入外部模块:
try:
import
except Exception as e:
if e.__type__ == '':
#do things...
else:
#do other things...