gpt4 book ai didi

python - 在 Python 中捕获所有异常

转载 作者:IT老高 更新时间:2023-10-28 20:30:22 28 4
gpt4 key购买 nike

在 Python 中,捕获“所有”异常的最佳方法是什么?

except: # do stuff with sys.exc_info()[1]

except BaseException as exc:

except Exception as exc:

catch 可能正在线程中执行。

我的目标是记录普通代码可能抛出的任何异常,而不掩盖任何特殊的 Python 异常,例如那些指示进程终止等的异常。

获取异常的句柄(例如通过上面包含 exc 的子句)也是可取的。

最佳答案

  • except Exception: vs except BaseException::

    捕获ExceptionBaseException 的区别在于根据exception hierarchy SystemExit、KeyboardInterrupt 和 GeneratorExit 等异常在使用 except Exception 时不会被捕获,因为它们直接继承自 BaseException

  • except: vs except BaseException::

    这两者之间的区别主要在python 2(AFAIK)中,只有在使用旧样式类作为要引发的异常时,在这种情况下,只有无表达式的except子句才能捕获异常,例如.

    class NewStyleException(Exception): pass

    try:
    raise NewStyleException
    except BaseException:
    print "Caught"

    class OldStyleException: pass

    try:
    raise OldStyleException
    except BaseException:
    print "BaseException caught when raising OldStyleException"
    except:
    print "Caught"

关于python - 在 Python 中捕获所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160983/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com