这是手册上的自定义错误处理程序,你可以仔细看一下 <?php// redefine the user error constants - PHP 4 only //重新定义错误常数 define("FATAL", E_USER_ERROR); define("ERROR", E_USER_WARNING); define("WARNING", E_USER_NOTICE);// set the error reporting level for this script //设置错误报告水平 error_reporting(FATAL | ERROR | WARNING);// error handler function //错误处理函数 function myErrorHandler($errno, $errstr, $errfile, $errline) { switch ($errno) { case FATAL: echo "<b>致命的</b> [$errno] $errstr<br />\n"; echo " 致命的错误,发生在文件 $errfile 的第 $errline 行"; echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n"; echo "异常中断...<br />\n"; exit(1); break; case ERROR: echo "<b>一般错误</b> [$errno] $errstr<br />\n"; break; case WARNING: echo "<b>警告</b> [$errno] $errstr<br />\n"; break; default: echo "错误类型: [$errno] $errstr<br />\n"; break; } }// function to test the error handling function scale_by_log($vect, $scale) { if (!is_numeric($scale) || $scale <= 0) { trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale", FATAL); } if (!is_array($vect)) { trigger_error("Incorrect input vector, array of values expected", ERROR); return null; } for ($i=0; $i<count($vect); $i++) { if (!is_numeric($vect[$i])) trigger_error("Value at position $i is not a number, using 0 (zero)", WARNING); $temp[$i] = log($scale) * $vect[$i]; } return $temp; }// set to the user defined error handler //起用用户定义的错误处理函数 $old_error_handler = set_error_handler("myErrorHandler"); // trigger some errors // 引发一些错误用于测试 //, first define a mixed array with a non-numeric item echo "vector a\n"; $a = array(2,3, "foo", 5.5, 43.3, 21.11); print_r($a);// now generate second array, generating a warning echo "----\nvector b - a warning (b = log(PI) * a)\n"; $b = scale_by_log($a, M_PI); print_r($b);// this is trouble, we pass a string instead of an array echo "----\nvector c - an error\n"; $c = scale_by_log("not array", 2.3); var_dump($c);// this is a critical error, log of zero or negative number is undefined echo "----\nvector d - fatal error\n"; $d = scale_by_log($a, -2.5);?>
<?php// redefine the user error constants - PHP 4 only
//重新定义错误常数
define("FATAL", E_USER_ERROR);
define("ERROR", E_USER_WARNING);
define("WARNING", E_USER_NOTICE);// set the error reporting level for this script
//设置错误报告水平
error_reporting(FATAL | ERROR | WARNING);// error handler function
//错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case FATAL:
echo "<b>致命的</b> [$errno] $errstr<br />\n";
echo " 致命的错误,发生在文件 $errfile 的第 $errline 行";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "异常中断...<br />\n";
exit(1);
break;
case ERROR:
echo "<b>一般错误</b> [$errno] $errstr<br />\n";
break;
case WARNING:
echo "<b>警告</b> [$errno] $errstr<br />\n";
break;
default:
echo "错误类型: [$errno] $errstr<br />\n";
break;
}
}// function to test the error handling
function scale_by_log($vect, $scale) {
if (!is_numeric($scale) || $scale <= 0) {
trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale",
FATAL);
} if (!is_array($vect)) {
trigger_error("Incorrect input vector, array of values expected", ERROR);
return null;
} for ($i=0; $i<count($vect); $i++) {
if (!is_numeric($vect[$i]))
trigger_error("Value at position $i is not a number, using 0 (zero)",
WARNING);
$temp[$i] = log($scale) * $vect[$i];
}
return $temp;
}// set to the user defined error handler
//起用用户定义的错误处理函数
$old_error_handler = set_error_handler("myErrorHandler");
// trigger some errors
// 引发一些错误用于测试
//, first define a mixed array with a non-numeric item
echo "vector a\n";
$a = array(2,3, "foo", 5.5, 43.3, 21.11);
print_r($a);// now generate second array, generating a warning
echo "----\nvector b - a warning (b = log(PI) * a)\n";
$b = scale_by_log($a, M_PI);
print_r($b);// this is trouble, we pass a string instead of an array
echo "----\nvector c - an error\n";
$c = scale_by_log("not array", 2.3);
var_dump($c);// this is a critical error, log of zero or negative number is undefined
echo "----\nvector d - fatal error\n";
$d = scale_by_log($a, -2.5);?>
要写结论吗?
下班前过来看,如果没人要,我就结帖了.脸红ing