3

私はdjango 1.2.7とpython 2.6を使用しています。このコードを使用する場合:(ポルプスの識別エラーあり

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を手に入れました。

最初の例で識別エラーをキャッチするにはどうすればよいですか?

私の try-except が 2 番目の例で例外をキャッチするのと同じように。

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 に答える