Python-关于捕获任何异常

发布于 2021-02-02 23:13:58

我如何编写一个try/ except块来捕获所有异常?

关注者
0
被浏览
59
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你可以,但你可能不应该:

    try:
        do_something()
    except:
        print "Caught it!"
    

    但是,这也会捕获类似的异常,KeyboardInterrupt而你通常不希望那样,对吗?除非你立即重新引发异常,否则请参阅docs中的以下示例:

    try:
        f = open('myfile.txt')
        s = f.readline()
        i = int(s.strip())
    except IOError as (errno, strerror):
        print "I/O error({0}): {1}".format(errno, strerror)
    except ValueError:
        print "Could not convert data to an integer."
    except:
        print "Unexpected error:", sys.exc_info()[0]
        raise
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    除了一个裸露的except:子句(就像其他人说的那样,你不应该使用),你可以简单地捕获Exception

    import traceback
    import logging
    
    try:
        whatever()
    except Exception as e:
        logging.error(traceback.format_exc())
        # Logs the error appropriately. 
    

    通常,仅当你想在终止之前处理任何其他未捕获的异常时,才通常考虑在代码的最外层执行此操作。

    的优势,except Exception在裸露的except是,有少数例外,它不会赶上,最明显KeyboardInterruptSystemExit:如果你抓住了,吞下这些,那么你可以让任何人都很难离开你的脚本。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看