Certaines fonctions puissantes de gestion des erreurs ont été ajoutées à PHP7, rendant les développeurs plus flexibles et efficaces dans la gestion des erreurs et des exceptions. Cet article présente ces nouvelles fonctions de gestion des erreurs et fournit des exemples de code spécifiques pour montrer comment mieux gérer les erreurs et les exceptions.
1. Fonction de gestion des erreurs
set_error_handler(callback)
set_error_handler(callback)
function customErrorHandler($errno, $errstr, $errfile, $errline) { // 记录错误日志 error_log("Error: $errstr in $errfile on line $errline"); // 发送错误邮件 $to = "admin@example.com"; $subject = "PHP Error"; $message = "An error occurred: $errstr in $errfile on line $errline"; mail($to, $subject, $message); } set_error_handler("customErrorHandler");
set_exception_handler(callback)
function customExceptionHandler($exception) { // 记录异常日志 error_log("Exception: " . $exception->getMessage()); // 发送异常邮件 $to = "admin@example.com"; $subject = "PHP Exception"; $message = "An exception occurred: " . $exception->getMessage(); mail($to, $subject, $message); } set_exception_handler("customExceptionHandler");
error_reporting(level)
E_ALL
:显示和记录所有错误(默认值)。E_ERROR
:只显示和记录致命错误。E_WARNING
:显示和记录警告和致命错误。E_NOTICE
:显示和记录通知、警告和致命错误。E_NONE
function customErrorHandler($errno, $errstr, $errfile, $errline) { // 记录错误日志 error_log("Error: $errstr in $errfile on line $errline"); // 返回一个错误提示给用户 echo "上传失败,请稍后重试。"; } set_error_handler("customErrorHandler");
set_exception_handler(callback)
function customExceptionHandler($exception) { // 记录异常日志 error_log("Exception: " . $exception->getMessage()); // 返回一个异常提示给用户 echo "上传失败,请稍后重试。"; } set_exception_handler("customExceptionHandler");
error_reporting(level)
Cette fonction est utilisée pour définir le niveau de rapport d'erreurs. Les développeurs peuvent contrôler si les messages d'erreur sont affichés et enregistrés en définissant différents niveaux. Voici quelques niveaux de rapport d'erreurs couramment utilisés :
E_ALL
: affiche et enregistre toutes les erreurs (par défaut).
E_ERROR
: affiche et enregistre uniquement les erreurs fatales.
E_WARNING
: affiche et enregistre les avertissements et les erreurs fatales.
E_NOTICE
: affiche et enregistre les notifications, les avertissements et les erreurs fatales.
E_NONE
: Ne pas afficher ni enregistrer d'erreurs.
try { // 检查图片文件是否上传成功 if ($_FILES["file"]["error"] != UPLOAD_ERR_OK) { throw new Exception("上传失败"); } // 检查文件类型是否合法 $allowedTypes = ["image/jpeg", "image/png"]; if (!in_array($_FILES["file"]["type"], $allowedTypes)) { throw new Exception("文件类型不支持"); } // 将上传的文件保存到服务器上 $destination = "uploads/" . $_FILES["file"]["name"]; move_uploaded_file($_FILES["file"]["tmp_name"], $destination); // 返回上传成功提示给用户 echo "上传成功"; } catch (Exception $e) { // 处理异常 $error = $e->getMessage(); error_log("Exception: $error"); // 返回一个错误提示给用户 echo "上传失败,请稍后重试。"; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!