繁体   English   中英

如何定义错误类别?

[英]How do I define an Error Class?

Python 2.7.3

当我为像鹦鹉一样不再存在的用户运行SillyWalk.getGroups(user_id = user)时,出现以下错误。

Traceback (most recent call last):
    File "C:\Python\API\getgroups.py", line 32, in <module>
        Grp = SillyWalk.getGroups(user_id = user)
    File "c:\python27\lib\site-packages\SillyWalkapi-1.4.2-py2.7.egg\SillyWalkapi\__init__.py", line 349, in handler
        parse_format=args['format'], **args)
    File "c:\python27\lib\site-packages\SillyWalkapi-1.4.2-py2.7.egg\SillyWalkapi\__init__.py", line 435, in __wrap_in_parser
        return parser(self, data)
    File "c:\python27\lib\site-packages\SillyWalkapi-1.4.2-py2.7.egg\SillyWalkapi\__init__.py", line 278, in parse_etree
        raise SillyWalkError(u'Error: %(code)s: %(msg)s' % err.attrib)
SillyWalkError: Error: 1: User not found

我试图通过try ... except来解决此问题, try ... except声明中没有:

try:
    Grp = SillyWalk.getGroups(user_id = user)
    g = 0
    for group in Grp.find('groups').findall('group'):
        g += 1
        u_ID  = user
        g_ID  = group.get('_ID')
        gName  = "" # group.get('name')
        HasParrot    = group.get('HasParrot')
        Priv   = group.get('Priv')
        Mbr    = group.get('members')
        threads = group.get('threads')

        tup = '{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\n'.format(u_ID, g_ID, gName.encode('utf-8'), HasParrot, Priv, Mbr, threads)
        OutFile.write(tup.encode('utf-8'))
except SillyWalkError:
    tup = '{0}\tNo Records Found\n'.format(u_ID)
    OutFile.write(tup.encode('utf-8'))

但这给了我一个不确定的错误:

Traceback (most recent call last):
    File "C:\Python\API\getgroups.py", line 47, in <module>
        except SillyWalkError:
NameError: name 'SillyWalkError' is not defined
>>> 

这是我第一次尝试编写异常类,所以有人可以告诉我该怎么做吗? 由于各种错误原因, SillyWalk.getGroups具有十几个不同的错误号。 我每个人都需要一个保护套吗?

我将永远在你的债务中! (您永远不会从我这里收集任何东西,但我仍然欠您!)

顺便说一句:在扎根我的脚本胆量的同时,有人可以告诉我如何解决我的gName问题,所以我不需要将其消除? 它一直在给我:

Traceback (most recent call last):
    File "C:\Python\API\getgroups.py", line 44, in <module>
        OutFile.write(tup.encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 54: ordinal not in range(128)

NameError: name 'SillyWalkError' is not defined只是表示NameError: name 'SillyWalkError' is not defined名称SillyWalkError 它与异常处理或编写异常类无关。

看来您只是没有将名称SillyWalkError导入到试图捕获异常的模块中。 如果没有except ,您得到的错误表明异常类本身运行良好。

好,体育迷们!

至少我对此提出的第一个问题是我许多金发时刻中的一个! 金发时刻!

我使用的是except SillyWalk.SillyWalkError ...而不是except SillyWalk***api***.SillyWalkError ...

感谢所有提供帮助的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM