Rumah  >  Soal Jawab  >  teks badan

python如何吞任何形式的异常?

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

ringa_leeringa_lee2741 hari yang lalu517

membalas semua(2)saya akan balas

  • PHP中文网

    PHP中文网2017-04-18 10:35:44

    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~

    balas
    0
  • 怪我咯

    怪我咯2017-04-18 10:35:44

    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()
    

    balas
    0
  • Batalbalas