当前位置:  开发笔记 > 编程语言 > 正文

如何在Python 3中打印异常?

如何解决《如何在Python3中打印异常?》经验,为你挑选了3个好方法。

现在,我在except Exception:条款中捕获了异常,并且做了print(exception).结果不提供任何信息,因为它始终打印.我知道这曾经在python 2中工作,但我如何在python3中做到这一点?



1> Noah Bogart..:

我猜你需要将Exception变量分配给变量.如Python 3教程中所示:

def fails():
    x = 1 / 0

try:
    fails()
except Exception as ex:
    print(ex)

简要说明as是在某些复合语句中使用的伪赋值关键字,用于将前一个语句赋值给变量或将其别名.

在这种情况下,as将捕获的异常分配给变量,以允许稍后存储和使用的有关异常的信息,而不是需要立即处理.(这在Python 3语言参考:try声明中有详细讨论.)


使用的另一个复合语句aswith声明:

@contextmanager
def opening(filename):
    f = open(filename)
    try:
        yield f
    finally:
        f.close()

with opening(filename) as f:
    # ...read data from f...

这里,with语句用于使用上下文管理器定义的方法包装块的执行.它的功能类似于try...except...finally整齐的生成器包中的扩展语句,并且as语句将生成器生成的结果从上下文管理器分配给变量以供扩展使用.(这在Python 3语言参考:with声明中有详细讨论.)


最后,as可以在导入模块时使用,将模块别名为不同的(通常更短的)名称:

import foo.bar.baz as fbb

这在Python 3语言参考:import声明中有详细讨论.



2> rigel..:

这些是自python 2以来的变化:

    try:
        1 / 0
    except Exception as e: # (as opposed to except Exception, e:)
                           # ^ that will just look for two classes, Exception and e
        # for the repr
        print(repr(e))
        # for just the message, or str(e), since print calls str under the hood
        print(e)
        # the arguments that the exception has been called with. 
        # the first one is usually the message. (OSError is different, though)
        print(e.args)


Python 3似乎没有`message`属性,而`str(e)`则将错误的位置和类型附加到消息中。正确?

3> wpercy..:

尝试

except Exception as e:
    print(e)

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有