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

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

ringa_lee
ringa_lee

ringa_lee

répondre à tous(2)
Ty80

Cela nécessite d'encapsuler un framework, mais toutes les erreurs que vous décrivez continuent de s'exécuter. Cette exigence est que vous supposez que même s'il y a une erreur, cela n'affectera pas les résultats d'exécution du programme. Cela signifie que vous pouvez contrôler vous-même l'étendue de l'erreur si la probabilité qu'une telle erreur se produise est élevée et qu'elle l'est. pas fatal, vous espérez le transmettre dans le thread principal. Le thread est capturé et toute exception est finalement levée via l'entrée du programme. Vous devez donc effectuer la capture dans le bloc de démarrage de l'exécution du programme.

try:
    main()
except:
    pass

Cette méthode se terminera également lorsqu'une exception se produit, si vous souhaitez continuer à essayer. Vous pouvez ajouter une boucle

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

Mais cette méthode nécessite que vous sachiez très bien que le programme fonctionnera normalement après plusieurs tentatives, sinon il se fermera quand même.
Enfin, ce que je veux dire, c'est que lorsque le programme se bloque à cause d'une exception, il vous rappelle que vous devriez vraiment le réparer au lieu de l'ignorer. Si vous l'ignorez et continuez à courir mais obtenez de mauvais résultats, vous le regretterez ~

刘奇

devrait être

try....except

De plus, vous ajoutez try..sauf dans la couche la plus externe Lorsque le programme fait une erreur, il ne détectera l'erreur que dans la couche la plus externe, puis quittera. J'ai un moyen, mais après une erreur, vous pouvez. recommencez seulement (de préférence trouver ce qui n'a pas fonctionné)

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()
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!