Python 3例外不打印新行

时间:2012-07-17 14:58:35

标签: 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:
    print(err)

它的工作原理如下:

$ ./test.py
(ParserError(...), 'This should have\na line break')

如何确保新行打印为新行?

class ParserError(Exception):
    pass

print(err.args[1])

2 个答案:

答案 0 :(得分:5)

啊,err.message在2.6中被弃用 - 所以不再存在,所以...

print(err.args[1])

答案 1 :(得分:2)

这里发生的事情是,正在打印消息字符串的repr作为将整个Exception对象传递给print()的一部分,因此换行符将被转换回{{ 1}}。如果您单独\n实际字符串,则会打印实际换行符。