在 django 中处理视图语法错误与异常

Posted

技术标签:

【中文标题】在 django 中处理视图语法错误与异常【英文标题】:handling of view syntax error vs exceptions in django 【发布时间】:2012-12-25 10:37:25 【问题描述】:

我正在使用 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 在第二个示例中捕获异常一样。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

根据您的编辑器/IDE,您可以安装后台 linters,以动态扫描您的代码以查找微不足道的错误。【参考方案2】:

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

您没有理由试图抓住它们,只需修复它们即可。

【讨论】:

我想抓住它们,因为我希望能够控制响应,以防我的代码出现错误。 @yossi 我在这里要说的是不值得付出努力。我非常了解您的目标。【参考方案3】:

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

【讨论】:

【参考方案4】:

语法错误不是运行时错误,它们发生在编译时。据我所知,您无法使用 try/except 块捕获它们。

【讨论】:

以上是关于在 django 中处理视图语法错误与异常的主要内容,如果未能解决你的问题,请参考以下文章

016异常处理

异常处理

异常处理

异常处理

python 基础篇 错误和异常处理

异常处理 day 30