为什么自定义异常字符串打印为数组?

4th*_*ace 1 python exception

在Python 2.7.x中,我创建了一个Exception类:

class myException(RuntimeError):
  def __init__(self,arg):
    self.args = arg
Run Code Online (Sandbox Code Playgroud)

当我使用它时:

try:
  raise myException("This is a test")
except myException as e:
  print e
Run Code Online (Sandbox Code Playgroud)

它打印出来像这样:

('这是'...)

我没有打印整个东西,但为什么不打印出一个字符串?我该如何转换它?

另外,为什么e.message是空白的?

Mar*_*ers 5

args一个例外是特殊的; 它希望是一个序列.指定一个字符串self.args是合法的,它是一个序列,但是当你将它转换成一个元组.

分配包含您的参数的元组:

class myException(RuntimeError):
    def __init__(self, arg):
         self.args = (arg,)
Run Code Online (Sandbox Code Playgroud)

查看BaseException文档:

args
给出异常构造函数的参数元组.一些内置异常(例如IOError)期望一定数量的参数并为该元组的元素赋予特殊含义,而其他异常通常仅使用单个字符串来调用,从而产生错误消息.