3

私の実際の場合、ctypesを介して使用される外部ライブラリに由来するため、何もできない句がSegmentation fault発生します。finally実際、スクリプトはとにかく行われるので、私はこのセグメンテーション違反を気にしません。

ただし、finallyのsegfaultは、それ以前に発生したすべての例外を最終的に食い尽くします。したがって、最初のデバッグNameErroriDontExistお尻の痛みになります。それはどこでも起こりません。現在、セグメンテーション違反の前から発生した例外を確認する方法はありません。

def f1():
    try:
        while True:
            pass
    except KeyboardInterrupt:
        print iDontExist

if __name__=="__main__":
    try:
        f1()
    finally:
        raise Exception("segfault here")
        print "finally"

私はそれについて何ができると思いますか?外部ライブラリを修正することはオプションではありません。

4

1 に答える 1

4

最終的に次の前に例外をキャッチしようとすることができます。

try:
    f1()
except NameError as error:  # Change as needed
    print "Error caught:", error  # Or simply "raise", in order to raise the error caught
finally:
    raise Exception("segfault here")
    print "finally"

とはいえ、abamertは正しいです。セグメンテーション違反も例外ではないので、他の何かを探している可能性があります。

于 2013-02-27T00:47:19.867 に答える