Python 3.x Python3-使用Exception时未捕获索引器

Python 3.x Python3-使用Exception时未捕获索引器,python-3.x,exception,try-catch,Python 3.x,Exception,Try Catch,我想捕捉Python3中任何类型的错误 我正在尝试这样的事情: try: fields = line.split(' ') ... <PostgreSQL query execution> except psycopg2.Error: conn.rollback() QUERY = "UPDATE table SET error='sql'"

我想捕捉Python3中任何类型的错误

我正在尝试这样的事情:

try:
   fields = line.split(' ')
   ...
   <PostgreSQL query execution>

except psycopg2.Error:
                    conn.rollback()
                    QUERY = "UPDATE table SET error='sql'"
                    cur = conn.cursor()
                    cur.execute(QUERY)
                    conn.commit()
                    cur.close()
                    continue
except:
                    conn.rollback()
                    e="generic"
                    QUERY = "UPDATE table SET error='generic'"
                    cur = conn.cursor()
                    cur.execute(QUERY)
                    conn.commit()
                    cur.close()
                    continue
                    
试试看:
字段=行分割(“”)
...
除了psycopg2。错误:
控制点回滚()
QUERY=“更新表集错误='sql'”
cur=连接光标()
当前执行(查询)
康涅狄格州提交
当前关闭()
持续
除:
控制点回滚()
e=“通用”
QUERY=“更新表集错误='generic'”
cur=连接光标()
当前执行(查询)
康涅狄格州提交
当前关闭()
持续
但是我注意到,例如,索引器没有被捕获,脚本失败

怎么了


谢谢

当except块中发生新异常时,会发生这种情况

例如:

try:
    print('foo')
    raise ValueError
except:
    print('noes!')
    print(1/0)
将以除零异常退出

为了查看是否是这样,我们需要您提供更多的实际代码,特别是两个except块


如果您想确保捕获“any”异常,请确保您的except块是非异常的。

这是否回答了您的问题?实际上,脚本失败,出现“IndexError”异常。我刚刚编辑了问题,添加了两个块。正如您所建议的,sql语句中有一个错误。@Fab很高兴我能提供帮助。请注意,根据定义,捕获SQL错误并在除块之外的块中尝试更多SQL容易出错(即使查询中没有错误)。如果由于与服务器的连接中断而发生初始异常,该怎么办?except块的经验法则是使用尽可能少的依赖于外部环境的代码。或者一些正常失败的东西,比如syslog消息。