Eval'd 코드에서 발생한 구문 오류 잡기
Python에서는 eval( ) 기능이 있지만 소스 코드 자체로는 작동하지 않습니다. 이 동작은 각 경우에 컴파일러가 포함될 때 타임스탬프가 다르기 때문에 발생합니다.
컴파일러 실행과 Try/Except 블록
첫 번째 코드 조각에서 a=a에서 구문 오류가 발생하면 컴파일러는 try/Exception 블록이 실행되기 전에 예외를 발생시킵니다. 기본적으로 컴파일러는 오류를 감지하고 프로그램이 더 이상 실행되지 않도록 합니다.
그러나 eval()을 사용하는 두 번째 스니펫에서는 컴파일러가 두 번 실행됩니다. 초기 컴파일에서는 오류가 감지되지 않고 try/exc 블록이 설정됩니다. eval()이 호출되면 컴파일러는 eval() 문 내의 코드를 다시 컴파일하여 구문 오류가 발생합니다. 이 오류는 try/exc 블록이 설정된 후에 발생하며 예외를 포착할 수 있습니다.
구문 오류 차단
구문 오류를 포착하려면 다음을 사용해야 합니다. 컴파일러를 두 번 실행하는 기술입니다. 이는 다양한 방법을 통해 달성할 수 있습니다:
제한 사항
이러한 방법이 도움이 될 수 있습니다. 구문 오류를 가로채면 주의사항이 있습니다. try/제외 블록을 설정하는 컴파일러의 초기 실행 이전에는 구문 오류를 포착할 수 없습니다. 따라서 동적으로라도 오류를 포착하기 전에 코드가 구문적으로 올바른지 확인하는 것이 중요합니다.
위 내용은 왜 Python의 `try/Exception`은 소스 코드에서 구문 오류를 포착할 수 없지만 `eval()`d 코드에서는 이를 포착할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!