我该如何定义一个错误类?
我在使用 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:
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)
2 个回答
0
好的,运动迷们!
我最开始对这个问题的困惑,真的是因为我脑袋一时转不过来!
我用的是 except SillyWalk.SillyWalkError ...
,而应该用 except SillyWalk***api***.SillyWalkError ...
。
感谢所有帮助过我的人!
1
NameError: name 'SillyWalkError' is not defined
这个错误的意思是说,名字 SillyWalkError
没有被定义。这并不是说和处理异常或者写异常类有什么特别的关系。
看起来你只是没有把名字 SillyWalkError
导入到你想要捕捉这个异常的模块里;你之前没有用 except
的错误说明这个异常类本身是没问题的。