ホームページ >バックエンド開発 >PHPチュートリアル >動的 PHP 式でのゼロ除算エラーを処理するにはどうすればよいですか?
PHP でのゼロ除算例外のキャッチ
実行時に構築された動的な数式を扱う場合、ゼロ除算の適切なエラー処理を保証することは、重要な。従来の例外処理メカニズムが機能しない可能性があるため、eval だけを使用するだけでは不十分な場合があります。
PHP7 では、このようなシナリオを処理するために DivisionByZeroError 例外が導入されました。この例外を使用すると、ゼロ除算エラーを効果的にキャッチできます。
try { echo 1 / 0; } catch (DivisionByZeroError $e) { echo "Division by zero occurred with error: $e"; } catch (ErrorException $e) { echo "A generic error occurred: $e"; // Fallback for PHP versions before PHP7 }
この場合、動的に構築された式は次のようになります。
"$foo + $bar * ( $baz / ( $foz - $bak ) )"
If $foz is等しい$bak の場合、式は暗黙的なゼロ除算になります。この問題は、eval 内に DivisionByZeroError 例外処理を組み込むことで解決できます:
if (@eval("try{$result = $expresion;}catch(\DivisionByZeroError $e){$result = 0;}") === FALSE) { $result = 0; } echo "The result is: $result";
また、PHP7 より前のバージョンの PHP では、ErrorException クラスを利用してランタイム エラーを処理できます:
if (@eval("try{$result = $expresion;}catch(\Exception $e){$result = 0;}") === FALSE) { $result = 0; } echo "The result is: $result";
以上が動的 PHP 式でのゼロ除算エラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。