Python3异常不打印新行
我真的不知道该怎么说,但当我在python 3.2中引发异常时,“\n”不会被解析 以下是一个例子: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:
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])