2010-08-12 62 views
5

我的框架是提高语法错误,当我尝试执行此代码:是我的人类编译器:这个Python 2.5代码有什么问题?

from django.template import Template, TemplateSyntaxError 
    try: 
     Template(value) 
    except TemplateSyntaxError as error: 
     raise forms.ValidationError(error) 
    return value 

而这里的错误:

from template_field import TemplateTextField, TemplateCharField 
     File "C:\django\internal\..\internal\cmsplugins\form_designer\template_field.py", line 14 
     except TemplateSyntaxError as error: 
            ^
    SyntaxError: invalid syntax 

这是怎么回事?

回答

17

的备用语法except SomeException as erris new in 2.6。你应该在2.5中使用except SomeException, err

+0

太棒了!谢谢。 – 2010-08-12 19:43:55

3

你的try块里面什么都没有。 一个try/except块的样子:

try: 
    do_something() 
except SomeException as err: 
    handle_exception() 
6

你不能有一个空try块像Python编写的。如果你只想做什么中块(原型代码,说的),使用pass关键字:

from django.template import Template, TemplateSyntaxError 
try: 
    pass 
except TemplateSyntaxError as error: 
    Template(value) 
    raise forms.ValidationError(error) 
return value 

编辑:这个答案的原始版本。我将留给子孙后代,但现在这个问题已经被编辑了,@jleedev对修改后的问题有正确的答案。

4

你什么都不能尝试。如果你真的什么都没有尝试,使用pass关键字:

try: 
    pass 
except TemplateSyntaxError as error: 
    Template(value) 
    raise forms.ValidationError(error) 
return value 

但基于Django的我(有限)的知识,我猜你想是这样的,而不是:

try: 
    return Template(value) 
except TemplateSyntaxError as error: 
    raise forms.ValidationError(error) 
+0

谢谢,你钉了它 - 我粘贴错误的代码,但基本上匹配你的更正。尽管如此,仍然收到错误,因为我修改了原始问题以反映。 – 2010-08-12 19:42:48

1

在Python中的每个块中,您都应该执行某些操作,或者如果您不想使用pass语句执行某些操作!