我想除了以下代码产生的错误,但我不知道如何。
from datetime import datetime
try:
date = datetime(2009, 12a, 31)
except:
print "error"
上面的代码不是打印"error"
。这就是我希望能够做到的。
编辑:我想检查语法错误的原因是因为12a是一个命令行参数。
感谢。
答案 0 :(得分:9)
命令行“参数”是字符串。如果你的代码是:
datetime(2009, '12a', 31)
它不会产生SyntaxError
。它引发了TypeError
。
在代码中使用之前,首先需要清除所有命令行参数。例如:
month = '12'
try:
month = int(month)
except ValueError:
print('bad argument for month')
raise
else:
if not 1<= month <= 12:
raise ValueError('month should be between 1 to 12')
答案 1 :(得分:3)
答案 2 :(得分:3)
您无法捕获语法错误,因为源必须在执行之前有效。我不太确定,为什么你不能简单地修复语法错误,但如果具有datetime的行是从用户输入(?)自动生成的,你必须能够捕获这些错误,你可能会尝试:
try:
date = eval('datetime(2009, 12a, 31)')
except SyntaxError:
print 'error'
但这仍然是一个可怕的解决方案。也许你可以告诉我们为什么你必须捕获这样的语法错误。