【问题标题】:handling of view syntax error vs exceptions in django在 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 在第二个示例中捕获异常一样。

【问题讨论】:

    标签: python django exception view


    【解决方案1】:

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

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

    【讨论】:

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

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

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

    【讨论】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 2012-02-20
        相关资源
        最近更新 更多