PHP 错误与异常 笔记与总结(1)错误(Deprecated,Notice,Warning)

【常见的错误类型】

① 语法错误

【例1】程序语句结尾少了‘;‘

<?php
$username = "dee"   //少了分号;
echo $username;

输出:

( ! ) Parse error: syntax error, unexpected T_ECHO in D:\practise\php\Error\error1.php on line 3

Parse error:解析错误

syntax error:语法错误

【PHP 中的错误级别】16 种

常量描述

E_ERROR 致命的运行时错误。终止程序执行。
E_WARNING (运行时警告)非致命的 run-time 错误。不暂停脚本执行。
E_PARSE
语法解析错误

E_NOTICE 通知(注意),表示可能表现为错误的情况
E_CORE_ERROR 在 PHP 初始化启动过程中发生的致命错误
E_CORE_WARNING PHP 初始化启动过程中发生的警告
E_COMPILE_ERROR 致命编译错误
E_COMPILE_WARNING
编译时警告

……
……

a. Deprecated 最低级别的错误 —— 不推荐 或 不建议

【例2】

<?php
if(ereg(‘dee‘, ‘welcome to dee\‘s medows‘, $matches)){
    print_r($matches);
}else{
    echo ‘not found‘;
}

输出:

( ! ) Deprecated: Function ereg() is deprecated in D:\practise\php\Error\error1.php on line 2
Array ( [0] => dee )

deprecated:不推荐的,过时的(可以使用 preg_match 代替 ereg 方法),但同时程序也输出了结果。

【例3】(PHP 5.3 以上版本)

<?php
echo mysql_escape_string(‘\‘ or 1 = 1 #‘);

输出:

Deprecated:mysql_escape_string():This Function id deprecated: use mysql_real_escape_string() instead. in ****
\‘ or 1 = 1 #

b. Notice 通知级别的错误 —— 语法中存在一些不当的地方。PHP 是弱类型语言,变量可以不声明直接使用,当直接使用某个变量的时候,就会发送一个 notice 级别的错误告诉你这个变量没有声明:undefined variable;再如数组索引,如果下标是字符串类型时,在使用数组索引(下标)时没有加引号,php 则会将其当成常量解析,如果没有找到这个常量,才将其当成下标去解析。

【例4】

<?php
echo $dee;
//程序继续执行
echo ‘continue‘;

输出:

( ! ) Notice: Undefined variable: dee in D:\practise\php\Error\error1.php on line 2
continue

【例5】

<?php
$userInfo = array(‘username‘=>‘dee‘, ‘age‘=>28);
echo $userInfo[‘username‘];
echo ‘<hr>‘;
echo $userInfo[age]; //会产生 notice 级别的错误
echo ‘<hr>‘;

echo ‘continue‘;

输出:

dee
( ! ) Notice: Use of undefined constant age - assumed ‘age‘ in D:\practise\php\Error\error1.php on line 5
28
continue
Use of undefined constant age :未定义的常量 age

所以这种写法是不规范的。

c. Warning 警告级别的错误—— 语法中不恰当的地方;或者函数希望得到两个参数,但是调用函数时只传递了一个参数;或者参数的类型,参数的值不正确

<?php
settype($var, ‘int‘); // 变量 var 的类型设置为 int
var_dump($var);

//设置一个不存在的类型,warning
settype($var, ‘dee‘);
var_dump($var);

echo ‘continue‘;

输出:

int 0
( ! ) Warning: settype() [function.settype]: Invalid type in D:\practise\php\Error\error1.php on line 6
 int 0
continue

Invalid type:非法的类型

(未完:Fatal 等)

② 环境错误

③ 逻辑错误

时间: 2024-10-12 09:30:34

PHP 错误与异常 笔记与总结(1)错误(Deprecated,Notice,Warning)的相关文章

PHP 错误与异常 笔记与总结(10)错误处理器测试

关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorHandler.php'; error_reporting(-1); set_error_handler(array('myErrorHandler', 'deal')); //通知级别错误 echo $notice; 运行,在 D:\practise\php\From\notice 生成 noticeLo

PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别

[PHP 配置文件中与错误相关的选项 ] 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 设置是否将错误信息记录到日志或者 error_log 中 error_log 设置脚本错误将记录到的文件 log_errors_max_len 设置 log_errors 的最大字节数 ignore_repeated_errors 是否忽略重复的错误信息 ignore_repeated_source 是否忽略重复错误消息的来源

PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()

通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处理—— 如果使用了该函数,程序会绕过标准的 PHP 错误处理. 摘自:php.net mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) 设置一个用户的函数(erro

PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项

[记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 1024 其他: 选项 描述 log_errors 设置是否将错误信息记录到日志或者 error_log 中 error_log 设置脚本错误将记录到的文件 log_errors_max_len 设置 log_errors 的最大字节数 ignore_repeated_errors 是否忽略重复的错误

PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中

[将错误记录到系统日志中] 在 php.ini 中将 error_log 设置为: error_log = syslog 或者在运行时使用 ini_set() 函数设置. [例1] <?php //关闭错误显示 ini_set('display_errors', 0); //开启错误日志功能 ini_set('log_errors', 'on'); //设置错误日志的路径 ini_set('error_log', 'syslog'); //显示所有错误 error_reporting(-1);

PHP 错误与异常 笔记与总结(2)错误(Fatal)

(接上) d.Fatal error 致命级别的错误 —— 程序终止执行 [例7]调用一个未定义的方法 <?php echo md6('dee'); echo 'continue'; 输出: ( ! ) Fatal error: Call to undefined function md6() in D:\practise\php\Error\error1.php on line 2 e. parse error 语法解析错误(也属于最高级别的错误,之前提到的错误都属于PHP 代码在运行期间产生

PHP 错误与异常 笔记与总结(14 )记录和发送异常信息

当发生异常时,把异常信息记录到日志文件中: 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 class LogException extends Exception{ 4 public function __construct($message = null, $code = 0){ 5 parent::__construct($message, $code); 6 error_log($this->getMessage

PHP 错误与异常 笔记与总结(18 )页面重定向实现

在发生错误时,将用户重定向到另一个页面. 1 <?php 2 header('content-type:text/html; charset=utf-8'); 3 4 class ExceptionRedirectHandler{ 5 6 protected $_exception; 7 protected $redirect = '404.html'; 8 protected $_logFile = 'D:/practise/php/Error/LogException3.log'; 9 10

PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误

有两种方式可以在 PHP 中以异常的方式处理错误: ① PHP 内置的 ErrorException类(也是 Exception 类的子类) 1 <?php 2 function exception_error_handler($errno, $errstr, $errfile, $errline){ 3 throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 4 } 5 6 set_error_handler('exc

PHP 错误与异常 笔记与总结(11 )register_shutdown_function() 函数的使用

通过 register_shutdown_function 方法,可以让我们设置一个当执行关闭时可以被调用的另一个函数. 也就是说,当我们的脚本执行完成或者意外死掉导致 php 执行即将关闭时,我们的这个函数会被调用. [使用场景] ① 页面被(用户)强制停止 ② 程序代码意外终止或超时 ③ php4 中没有析构函数,可以使用该函数模拟析构函数 shutdown.php <?php header("content-type:text/html;charset=utf-8"); c