Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3异常不打印新行_Python_Exception_Stderr - Fatal编程技术网

Python3异常不打印新行

Python3异常不打印新行,python,exception,stderr,Python,Exception,Stderr,我真的不知道该怎么说,但当我在python 3.2中引发异常时,“\n”不会被解析 以下是一个例子: class ParserError(Exception): def __init__(self, message): super().__init__(self, message) try: raise ParserError("This should have\na line break") except ParserError as err:

我真的不知道该怎么说,但当我在python 3.2中引发异常时,“\n”不会被解析

以下是一个例子:

class ParserError(Exception):
    def __init__(self, message):
            super().__init__(self, message)

try:
    raise ParserError("This should have\na line break")
except ParserError as err:
    print(err)
它的工作原理如下:

$ ./test.py
(ParserError(...), 'This should have\na line break')
如何确保新行作为新行打印

class ParserError(Exception):
    pass


这里发生的事情是,消息字符串的
repr
被打印出来,作为将整个
异常
对象传递到
print()
的一部分,因此换行符被转换回
\n
。如果您单独打印实际字符串,实际换行符将被打印。

啊,err.message在2.6中被弃用-因此不再存在,因此

print(err.args[1])

print(err.message)可以吗?不可以,object没有属性'message',有趣的是,如果你去掉
\uuuu init\uuuu
方法,只会用你的代码打印异常文本,并且换行符打印正确。我提到了
err.message
,但是当我尝试
print(err.message)时,对注释的回复是“没有属性”
我得到
'parserror'对象没有属性“message”
打印(err.args[1])
这里没有?对不起。所以习惯于写py 2.6/2.7代码,当我试图写3.x代码时,我的大脑有一个小故障!我不明白这是怎么解决的。OP希望在引发异常时打印换行符。你是说我们必须捕捉错误并自己正确打印吗?标准回溯将永远无法正确显示消息?
print(err.args[1])