在代码中添加异常处理程序来捕获抛出的异常并防止程序失败。以下是一个示例:
import time
import subprocess
import re
import sys
import locale
locale.setlocale(locale.LC_ALL, '')
from Xlib import display, X
from Xlib.protocol import request
TITLE_RE = re.compile(b'^_NET_WM_NAME|^WM_NAME')
def get_active_window():
root = display.Display().screen().root
window_id = root.get_full_property(display.Display().intern_atom('_NET_ACTIVE_WINDOW').id, X.AnyPropertyType).value[0]
window = None
try:
window = root.create_resource_object('window', window_id)
title = None
for attempt in range(100):
title = get_window_title(window)
if title == None:
time.sleep(0.001)
else:
break
finally:
return title
def get_window_title(window):
try:
for atom in map(display.Display().intern_atom,('_NET_WM_NAME', 'WM_NAME')):
reply = request.GetProperty(
window,
atom,
request.GetProperty.dont_delete,
0,
2**32-1).reply()
if reply and reply.type == Xlib.X.STRING:
return reply.value
return None
except:
return None
try:
active_window_title = get_active_window().decode(locale.getpreferredencoding())
except Exception as e:
active_window_title = ""
#异常处理
if active_window_title == "":
active_window_title = "Error: " + str(e)
在这个示例中,当 get_active_window()
函数返回空时,程序会在标题中添加一条错误消息。