在 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 中处理视图语法错误与异常的主要内容,如果未能解决你的问题,请参考以下文章