python如何吞任何形式的异常?
ringa_lee
ringa_lee 2017-04-18 10:33:44
0
2
541

经常看到有些模块,任何异常都不会崩溃,然后还是继续运行代码,自己试过在程序最外面加上try ----catch----但是好像并不能把所有错误信息都吞了,好像只对块内代码起作用,要是跳到另外的方法仍然会抛出异常,那种吞异常的是怎么写的呀?我现在有个需求要求代码一直跑。即使有异常也不能退出。。。请教各位大神指点

ringa_lee
ringa_lee

ringa_lee

全部回覆(2)
Ty80

這需要封裝一個框架,然而你所描述的任何錯誤都繼續運作。這種要求是你假設即使有錯誤也不影響程式的運行結果,那麼這就意味著你自己能夠控制錯誤的範圍,如果這種錯誤發生的機率很大並且並不是致命的,你希望透過在主線程捕獲,任何異常最終通過程式入口拋出。所以你應該是在程式運行啟動塊進行捕獲。

try:
    main()
except:
    pass

這種方式當出現異常是也會退出,如果希望再繼續嘗試。可以加上一個循環

while time_out < max_time_out:
    try:
        main()
    except:
        pass
        timeout+=100

但這種方式必須你自己非常清楚程式在若干次嘗試後能夠正常,否則還是會退出。
最後我想說的是,程式因為異常掛掉是提醒你真的應該去修復而不是忽略。如果忽略可以繼續運行但是帶來了錯誤的結果,你將後悔不已~

刘奇

應該是

try....except

另外你在最外層加try..except,當程式出錯後,只會在最外層捕捉到錯誤,然後就退出了,我有一個辦法,不過出錯後只能重頭開始(最好找到出錯的地方)

import sys

def main():
    print(1)
    int('s')

def main1():
    print(2)
    while True:
        try:
            main()
        except KeyboardInterrupt:
            sys.exit()
        except Exception:
            pass

if __name__ == '__main__':
    main1()
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板