如何在python中的try- except循环之前记录错误?

时间:2017-09-12 12:13:59

标签: python logging

我正在尝试为日志实现Python的日志记录库。

我理解如果在try-catch循环中包含某些内容,则会捕获异常。

但在我的一个例子中,导入失败,这是脚本的开始。这不会被记录。 (它只在Jupyter的日志中打印出来)

如何记录这些异常?寻找不在try - except循环中包装整个脚本。

Jupyter或任何IDE上的任何错误都会打印在控制台中,为什么不用logger?没有任何这样的实施

2 个答案:

答案 0 :(得分:1)

使用记录器时,您必须实施错误记录 在Python中,默认情况下,错误仅记录到控制台 因此,如果您想使用记录器,则必须添加逻辑以捕获并记录错误。

try except块是处理Python导入的常用方法。

引用Dive into Python

  

还有很多其他用途   处理实际的例外   错误条件。 常见的用法   标准的Python库是试图   导入一个模块,然后检查   是否有效。导入模块   不存在的将会提出一个   ImportError异常。您可以使用   这可以定义多个级别   基于哪些模块的功能   可以在运行时使用,也可以在运行时使用   支持多个平台(在哪里   特定于平台的代码是分开的   进入不同的模块)。

     

下一个例子演示了如何   使用例外来支持   特定于平台的功能。

try:
    import termios, TERMIOS                     
except ImportError:
    try:
        import msvcrt                           
    except ImportError:
        try:
            from EasyDialogs import AskPassword 
        except ImportError:
            getpass = default_getpass           
        else:                                   
            getpass = AskPassword
    else:
        getpass = win_getpass
else:
    getpass = unix_getpass

答案 1 :(得分:1)

与IDE日志的区别,或者即使您从控制台或终端运行python文件,只要捕获到异常,脚本就会立即中断。

如果你想获得异常并在它发生后做一些事情,例如记录它,那么你需要使用“try except”块。

我不知道为什么你试图避免使用“try except”块,因为它是该语言的基本功能,就像任何其他决策块一样(“if”,“while”,“for”,等)。

尝试将其视为常见的“if”声明:

Flowable
相关问题