我正在开发一个应用程序,但出现了一个问题。我正在考虑让 PHP 错误放在一边(它们将登录到数据库或文件中)并管理其他错误(例如“您的用户名无效”或“您输入了错误的密码”或“图像无法被加载”)使用著名的 try-catch 方法。只用try-catch就可以完全管理这种错误好吗?
最佳答案
异常的主要优点是它的“petite mort”行为,即 try{}
block 内的本地 die()
,阻止进一步的代码执行。
虽然它在处理应用程序错误方面非常方便,但在处理验证用户输入时却变得不太好。如果用户在填写表单时犯了 3 个错误,最好一次性显示全部错误,而不是一个接一个地显示。
您更需要 POST/Redirect/GET 模式来处理用户错误:
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
$err = array();
//performing all validations and raising corresponding errors
if (empty($_POST['name']) $err[] = "Username field is required";
if (empty($_POST['text']) $err[] = "Comments field is required";
if (!$err) {
//if no errors - saving data and redirect
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// all field values should be escaped according to HTML standard
foreach ($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
} else {
$form['name'] = $form['comments'] = '';
}
include 'form.tpl.php';
?>
关于php - 区分 PHP 错误和应用程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5152223/