評価されたコードからの構文エラーの検出
Python プログラム内でコードを実行すると、構文エラーが発生する可能性があります。通常、これらのエラーは最初のコンパイル段階で発生し、コードの実行さえ妨げられます。ただし、コンパイルの完了後に構文エラーが発生する場合があります。
コンパイル後の SyntaxErrors のキャッチ
次のコード スニペットは、コンパイラによって発生した SyntaxError:
<code class="python">try: a+a=a except SyntaxError: print("first exception caught")</code>
ただし、この試みは成功しません。コンパイラによって発生した構文エラーは、try/Except ブロックが確立される前に処理されます。
評価されたコードからの構文エラーの検出
対照的に、次のコード スニペットを考えてみましょう。
<code class="python">try: eval("a+a=a") except SyntaxError: print("second exception caught")</code>
この場合、eval() 関数に渡されたコードの評価中に構文エラーが発生します。例外は周囲の try/excel ブロックによってキャッチされ、目的の動作が得られます。
違いは何ですか?
これら 2 つのスニペットの主な違いは、操作の順序。最初のスニペットでは、try/Except ブロックが作成される前にコンパイラーによって構文エラーが発生します。 2 番目のスニペットでは、最初にコードがコンパイルされ、try/Except ブロックが確立され、コンパイラーの実行が終了した後に eval() 呼び出しによって構文エラーがトリガーされます。
したがって、構文エラーを捕捉するには、最初のコンパイル後に発生する場合は、コンパイラを強制的に 2 回実行する手法を使用する必要があります。これは、eval()、明示的なコンパイル呼び出し、インポート ステートメント (コードを別のファイルに書き込んだ後)、または exec() および execfile() によって実現できます。
以上がPython でコードのコンパイル後に SyntaxError が捕捉されることはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。