3

我正在使用 django 1.2.7 和 python 2.6。如果我使用此代码:(在 porpuse 上出现识别错误

def myview(request):
    try:
        if x:
        print 'x'
    except:
        return HttpResponseServerError('bazinga')

然后我没有得到我的回应。我得到 django 500 响应。

但如果我将代码更改为:

  def myview(request):
    try:
        if x:
            print 'x'
    except:
        return HttpResponseServerError('bazinga')

现在我得到了我自己的 500 和 bazinga 写的。

如何在第一个示例中捕获标识错误?

就像我的 try-except 在第二个示例中捕获异常一样。

4

4 回答 4

5

不要试图让 Django 在语法错误的情况下返回一个好的响应。这将很困难,并且将涉及仅针对这种情况使用您自己的代码,并且该代码本身需要无错误等。

相反,将精力投入到自动化测试套件中,这样可以在部署代码之前轻松找到这些错误。

于 2012-12-25T11:22:52.800 回答
2

可以很容易地检测到语法错误,因为您不需要运行代码而只需导入它。

没有理由你应该试图抓住它们,只是修复它们。

于 2012-12-25T10:57:26.937 回答
0

您可以从代码中捕获语法(和缩进)错误。在这里查看更多信息: 如何捕获 IndentationError

于 2012-12-25T11:06:02.370 回答
0

语法错误不是运行时错误,它们发生在编译时。据我所知,你不能用 try/except 块来捕捉它们。

于 2012-12-30T13:13:13.350 回答