Skip to main content
 首页 » 编程设计

Python,如何在捕获异常后让程序继续运行

2025年05月04日17lautakyan007

可能是一个简单的问题,因为我对 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。