Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana Saya Boleh Mengendalikan Pembahagian dengan Sifar Ralat dalam Ungkapan PHP Dijana Secara Dinamik?
PHP: Mengendalikan Bahagian mengikut Sifar dalam Ungkapan Dijana Secara Dinamik
Dalam PHP, menilai ungkapan secara dinamik dengan eval() menimbulkan cabaran apabila menghadapi pembahagian oleh ralat sifar. Ini boleh menyebabkan ranap aplikasi dan menyukarkan pengendalian ralat. Untuk menangani perkara ini, PHP7 memperkenalkan pengecualian DivisionByZeroError.
Menangkap Bahagian oleh Ralat Sifar
Untuk mengendalikan pembahagian dengan pengecualian sifar, anda boleh menggunakan blok cuba-tangkap. Berikut ialah contoh menggunakan DivisionByZeroError:
try { eval("$result = $expression;"); echo "The result is: $result"; } catch (DivisionByZeroError $e) { echo "Division by zero detected: $e"; } catch (ErrorException $e) { echo "Another error occurred: $e"; }
Kod ini cuba menilai ungkapan dan mencetak hasil atau mesej ralat yang sesuai sekiranya pembahagian dengan sifar atau pengecualian lain.
Penghuraian Ungkapan Dinamik
Contoh yang disediakan melibatkan membina ungkapan secara dinamik daripada data yang dihuraikan. Dalam senario sedemikian, menyemak penyebut sifar sebelum melaksanakan ungkapan tidak selalu boleh dilaksanakan.
Menggunakan @ Penindasan Ralat
Anda boleh menggunakan operator penindasan ralat @ untuk mengelakkan ralat mesej daripada dipaparkan semasa masih membenarkan pengecualian ditangkap. Walau bagaimanapun, ambil perhatian bahawa ini menyekat semua ralat, bukan hanya pembahagian dengan ralat sifar.
if (@eval(" try { $res = $a / $b; } catch (Exception $e) {}") === FALSE) { $res = 0; }
Kod ini menggunakan @ untuk menyekat mesej ralat dan memberikan 0 kepada $res jika penilaian gagal. Walau bagaimanapun, adalah penting untuk menggunakan operator ini dengan berhati-hati kerana ia boleh menyembunyikan kemungkinan ralat lain.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mengendalikan Pembahagian dengan Sifar Ralat dalam Ungkapan PHP Dijana Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!