Python 在django中处理异常-使用基类
我的django视图遍历一个列表,使用正则表达式检测列表中的特定元素,最后返回内容的dict。 分析列表时,可能会出现Python 在django中处理异常-使用基类,python,django,unit-testing,Python,Django,Unit Testing,我的django视图遍历一个列表,使用正则表达式检测列表中的特定元素,最后返回内容的dict。 分析列表时,可能会出现索引器错误和值错误 我需要处理这种情况下的异常。我试过这样做 def parse_list(oldlist): try: newlist=create_newlist(oldlist) except Exception as e: logger.debug(str(e)) else: mydict = mak
索引器错误
和值错误
我需要处理这种情况下的异常。我试过这样做
def parse_list(oldlist):
try:
newlist=create_newlist(oldlist)
except Exception as e:
logger.debug(str(e))
else:
mydict = make_dict(newlist)
def create_newlist(oldlist):
mydict = {}
for elem in oldlist:
if re.match('somepattern',elem[0]):
mydict['somekey']=int(elem[0].strip())
else:
raise ValueError(elem[0],' expects an integer')
...
return mydict
使用Exception as e:
中的Exception
类是否是处理源自上述函数的任何异常的正确方法
当我编写单元测试方法时
def test_me(self):
dl = parse_list(self.somelist)
print 'dl=\n',dl
self.assertTrue(len(dl),0)
我得到的控制台输出为
ERROR: test_me (myapp.tests.ParseTest)
..
IndexError: list index out of range
为什么记录器不记录异常
是否使用Exception中的Exception类作为e:正确的方法
处理来自上述函数的任何异常
在处理异常时,您应该尽可能具体。在您的情况下,您应该捕获索引器错误
和值错误
,而不是一般的异常
:
try:
...
except (ValueError, IndexError) as e:
...
你的另一个问题:
为什么记录器不记录异常
这取决于记录器的配置。您正在打印“调试”消息,但可以将其设置为仅记录/显示级别为“错误”或更高的消息。有关更多信息,请参见Python中的
是否使用Exception中的Exception类作为e:正确的方法
处理来自上述函数的任何异常
在处理异常时,您应该尽可能具体。在您的情况下,您应该捕获索引器错误
和值错误
,而不是一般的异常
:
try:
...
except (ValueError, IndexError) as e:
...
你的另一个问题:
为什么记录器不记录异常
这取决于记录器的配置。您正在打印“调试”消息,但可以将其设置为仅记录/显示级别为“错误”或更高的消息。有关更多信息,请参见Python中的