在Python 2.7.x中,我创建了一个Exception类:
class myException(RuntimeError):
def __init__(self,arg):
self.args = arg
当我使用它时:
try:
raise myException("This is a test")
except myException as e:
print e
打印出来像这样:
('T','h','我','s','','我','s'......)
我没有打印整个东西,但为什么不打印出来作为字符串?我该如何转换呢?
另外,为什么e.message空白?
答案 0 :(得分:5)
args
关于异常是特殊的;它希望是一个序列。将字符串分配给self.args
是合法的,它是一个序列,但是当你这样做时它会被转换为元组。
分配包含您的参数的元组:
class myException(RuntimeError):
def __init__(self, arg):
self.args = (arg,)
请参阅BaseException
documentation:
<强> ARGS 强>
赋予异常构造函数的参数元组。一些内置异常(如IOError
)期望一定数量的参数并为此元组的元素赋予特殊含义,而其他异常通常仅使用单个字符串调用给出错误消息。
答案 1 :(得分:1)
您所要做的就是:
class myException(RuntimeError):
def __init__(self,arg):
self.args = (arg,)