使用Redhat Python 2.7.5我试图使用YYYY-MM-DD
以datetime.datetime.strptime
格式解析日期,并且我间接地得到一个超出范围错误的元组,如下所示:
client.py in parse_date(d='2014-12-05')
138 return dt.datetime.strptime(d,"%Y-%m-%d")
139 except:
140 raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)
undefined, d = '2014-12-05', e undefined
<type 'exceptions.IndexError'>: tuple index out of range
args = ('tuple index out of range',)
message = 'tuple index out of range'
格式字符串看起来正确,问题的间歇性表明某种线程问题,但说实话我不知道,也不知道如何可靠地重现错误。有什么建议可以解决这个问题吗?
答案 0 :(得分:1)
我认为问题在于你捕获异常的方式:
except:
raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)
此处,您没有正确地将变量e
传递给format
。相反,它应该是
except:
raise Exception("Unexpected Date: '{0}' ({1})".format(d, e))
此外,如果e
恰好是异常加注,您需要显式获取如下变量:
except Exception as e:
raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)
最后,最好捕获try块可以引发的特定错误,所以你应该这样做
except ValueError as e:
raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)
答案 1 :(得分:0)
所以Exception来自你的异常处理程序。格式只有一个参数,但使用两个。