Apabila menggunakan pertanyaan MySQL dalam PHP, adalah perkara biasa untuk menggunakan konstruk mysqli atau die untuk menangani kemungkinan ralat. Walau bagaimanapun, adakah ia sentiasa perlu untuk menamatkan pelaksanaan skrip atau adakah terdapat alternatif?
Bertentangan dengan namanya, fungsi die() bukanlah yang ideal pendekatan untuk pengendalian ralat dalam konteks ini. Inilah sebabnya:
Daripada menggunakan die(), ia adalah disyorkan untuk mengkonfigurasi MySQLi untuk membuang pengecualian pada ralat menggunakan mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT). Ini membolehkan anda menulis arahan MySQLi tanpa kod pengendalian ralat tambahan, seperti:
$result = mysqli_query($link, $sql);
Sekiranya ralat, pengecualian akan dilemparkan. Anda boleh menangkap dan mengendalikan pengecualian ini dengan anggun, memberikan respons ralat tersuai atau mengubah hala pengguna dengan sewajarnya. Contohnya:
try { $result = mysqli_query($link, $sql); } catch (mysqli_sql_exception $e) { // Handle the error here log_error($e->getMessage()); redirect_to_error_page(); }
Jika mahu, anda juga boleh log ralat ke jadual berasingan untuk pengauditan atau analisis lanjut. Untuk melakukan ini, anda boleh mencipta fungsi tersuai untuk mengendalikan tugas ini:
function log_error($query, $error) { // Insert error log into a table $sql_insert_error = "INSERT INTO error_log (query, error) VALUES ('{$query}', '{$error}')"; mysqli_query($link, $sql_insert_error); }
Menggunakan mysqli atau die mungkin kelihatan mudah, tetapi ia tidak disyorkan kerana kelemahannya. Sebaliknya, konfigurasikan MySQLi untuk membuang pengecualian dan mengendalikan ralat dengan anggun. Dengan berbuat demikian, anda memastikan aplikasi berdaya tahan yang memberikan pengalaman pengguna yang lebih baik walaupun menghadapi ralat.
Atas ialah kandungan terperinci mysqli or die: Patutkah Kita Menerima Pengecualian Daripada Penamatan Serta-merta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!