如何在 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...

Suggestion by @tjollans