可能是一个简单的问题,因为我对 python 和一般编程还很陌生,但我目前正在努力改进我的程序,并且无法弄清楚如果捕获到异常如何让程序继续运行。也许我以错误的方式看待它,但例如我有一些类似的东西:
self.thread = threading.Thread(target=self.run)
self.thread.setDaemon(True)
self.thread.start()
def run(self):
logging.info("Starting Awesome Program")
try:
while 1:
awesome_program(self)
except:
logging.exception('Got exception on main handler')
OnError(self)
def OnError(self):
self.Destroy()
显然,我目前只是在出现错误时终止程序。 awesome_program 基本上是使用 pyodbc 连接远程数据库并运行查询。连接丢失时会出现问题。如果我没有捕捉到异常,程序就会卡住,所以我将其设置为上面那样会杀死程序,但是如果没有人在附近手动重新启动它,这并不总是理想的。有没有一种简单的方法可以使程序保持运行或重新启动。随意指责我不正确的语法或糟糕的编程技巧。我正在努力自学,但我仍然是一个新手,有很多我不明白或可能做的不正确。如果需要,我可以发布更多代码。我不确定要发布多少内容才不会让人不知所措。
请您参考如下方法:
在循环中捕获异常,并继续,即使捕获到异常也是如此。
def run(self):
logging.info("Starting Awesome Program")
while 1:
try:
awesome_program(self)
except:
logging.exception('Got exception on main handler')
OnError(self)
顺便说一句:
- 你的缩进看起来乱七八糟。
- 我更喜欢
while True。 Python 具有bool类型,与 C 不同,因此当需要 bool 时 - 给while一个 bool。
