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

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

ringa_lee
ringa_lee

ringa_lee

membalas semua(2)
Ty80

Ini memerlukan merangkum rangka kerja, namun sebarang ralat yang anda huraikan terus berjalan. Keperluan ini ialah anda menganggap bahawa walaupun terdapat ralat, ia tidak akan menjejaskan hasil program yang dijalankan Ini bermakna anda boleh mengawal skop ralat itu sendiri Jika kebarangkalian ralat tersebut adalah tinggi tidak membawa maut, anda berharap untuk lulus dalam utama Benang menangkap dan sebarang pengecualian akhirnya dibuang melalui entri program. Oleh itu, anda harus melakukan tangkapan dalam blok permulaan program yang dijalankan.

try:
    main()
except:
    pass

Kaedah ini juga akan keluar apabila pengecualian berlaku, jika anda ingin terus mencuba. Anda boleh menambah gelung

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

Tetapi kaedah ini memerlukan anda mengetahui dengan baik bahawa program akan berfungsi seperti biasa selepas beberapa percubaan, jika tidak, ia masih akan keluar.
Akhir sekali, apa yang saya ingin katakan ialah apabila program itu digantung kerana pengecualian, ia mengingatkan anda bahawa anda sepatutnya membetulkannya dan bukannya mengabaikannya. Jika anda mengabaikannya dan terus berlari tetapi mendapat keputusan yang salah, anda akan menyesal~

刘奇

sepatutnya

try....except

Selain itu, anda menambah cuba..kecuali di lapisan paling luar Apabila program membuat ralat, ia hanya akan menangkap ralat di lapisan paling luar dan kemudian keluar saya mempunyai cara, tetapi selepas ralat, anda boleh hanya bermula semula (sebaik-baiknya Cari apa yang salah)

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()
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan