ホームページ >バックエンド開発 >Python チュートリアル >Python の「try/excel」ブロックではソース コードの構文エラーをキャッチできないのに、「eval()」コードではキャッチできるのはなぜですか?
評価されたコードによって発生した構文エラーをキャッチする
Python では、eval( ) 関数ですが、ソース コード自体によるものではありません。この動作は、コンパイラが関係する場合にタイムスタンプが異なるために発生します。
コンパイラの実行と Try/Except ブロック
最初のコード スニペットでは、 a=a で構文エラーが発生すると、コンパイラは try/exc ブロックが実行される前に例外を発生させます。基本的に、コンパイラはエラーを検出し、プログラムがそれ以上実行されないようにします。
ただし、eval() を使用する 2 番目のスニペットでは、コンパイラは 2 回実行します。最初のコンパイルではエラーは検出されず、try/Except ブロックが設定されます。 eval() が呼び出されると、コンパイラは eval() ステートメント内のコードを再コンパイルし、構文エラーが発生します。このエラーは、try/excel ブロックが確立され、例外をキャッチできるようになった後に発生します。
構文エラーのインターセプト
構文エラーをキャッチするには、以下を使用する必要があります。コンパイラを 2 回実行する手法です。これはさまざまな方法で実現できます:
制限事項
これらのメソッドは役立ちますが、構文エラーをインターセプトする場合、警告が伴います。構文エラーは、try/excel ブロックを設定するコンパイラの最初の実行より前に検出できません。したがって、動的であってもエラーを検出する前に、コードが構文的に正しいことを確認することが重要です。
以上がPython の「try/excel」ブロックではソース コードの構文エラーをキャッチできないのに、「eval()」コードではキャッチできるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。