Python异常处理字符串消息引发的异常,字符列表除外

2024-04-29 09:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一条消息引发并排除一个自定义异常,但消息字符串打印为字符元组。 我的错误类别:

class myError(Exception):
    def __init__(self, arg):
        self.args = arg

试着提高除部分:

try:
    raise myError('some message.')
except myError, e:
    print e.args

当这张照片被正确地举起时,会打印出:

('s', 'o', 'm', 'e', ' ', 'm', 'e', 's', 's', 'a', 'g', 'e', '.', ' ')

当然,我想要一些信息。怎么回事?你知道吗


Tags: 字符串self消息initdefexceptionargargs
2条回答

您的问题是args已经是Exception的成员,它的定义如下:

args
The tuple of arguments given to the exception constructor

因此,用iterable(字符串是字符的iterable)分配一个元组,并以字符的元组结束。你知道吗

如何修复:

  1. 只需从异常中使用args

    class myError(Exception):
        pass
    
    try:
        raise myError('message')
    except myError as e:
        print(e.args[0])
    
  2. 使用新成员名称:

    class myError(Exception):
        def __init__(self, arg):
            self.msg = arg
    
    try:
        raise myError('message',)
    except myError as e:
        print(e.msg)
    

您不需要在异常中声明__init__

>>> class myError(Exception):
...     pass

>>> raise myError('some message.')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
__main__.myError: some message.

相关问题 更多 >