我不确定如何询问我在问什么,我不知道这里是否有任何示例代码真的与此相关,所以如果需要澄清,请问。
我在Python中有一个非平凡的程序可以完成一些事情。它从一些SQL Server数据库表读取,在SQL Server中执行一些DDL(两者都使用pyodbc),分析一些数据,并有一个GUI来协调所有内容,以便将来除了我之外的用户可以自动化该过程。
一切都按预期运作,但显然我不希望未来的用户总是遵守规则。我可以明确地指出哪些输入是错误的(即字段留空),但是有很多东西可能出错。 Try-catch结构是不可能的,因为它们在我的程序中发生的事情网络中引起了一些问题,其中一些嵌入在我正在使用的资源中,更不用说我觉得它可能不是很好的形式到处都有。
话虽如此,我想知道是否有一种方法可以导致事件(可能只是一个说出错误的对话框),这样没有输出窗口视图的用户就会知道出了什么问题。如果我也可以抓取错误消息本身会很好,但这不是必需的。如果问题得到纠正,只要程序可以继续运行,我仍然可以发现错误。
我不确定这是否可能,或者它是否可能采取何种形式,例如监视输出或侦听错误的内容,但我对所有相关信息持开放态度。
谢谢
答案 0 :(得分:2)
您可以使用try/except
块包装代码,并将Exception
命名为在对话框中打印,例如:
try:
# your code
except Exception as e:
print(e) # change this to be in your dialog
这样你就不会在不同的地方多次使用try/except
,你基本上会捕捉Exception
。另一种方法是针对每个错误raise
自定义异常,并使用except
捕获它们。
如果您仍然不想使用try/except
,可以启动thread
以继续检查某些变量(通过loop
)以及每当您想要启动错误事件您只需将该变量设置为True
,thread
将启动错误对话框。例如:
import time
import threading
test1 = False
test2 = False
def errorCheck():
while True:
if test1:
# start error dialog for error1
if test2:
# start error dialog for error2
time.sleep(0.1)
if __name__ == '__main__':
t = threading.Thread(target=errorCheck)
t.daemon = True
t.start()
# start your app
但是,我建议改为使用try/except
。