错误与异常
来源:互联网 发布:上海 逛街 知乎 编辑:程序博客网 时间:2024/06/15 18:34
先区别一下php中错误 与 异常的概念吧
PHP错误:是属于php程序自身的问题,一般是由非法的语法,环境问题导致的,使得编译器无法通过检查,甚至无法运行的情况。平时遇到的warming、notice都是错误,只是级别不同而已。
PHP异常:一般是业务逻辑上出现的不合预期、与正常流程不同的状况,不是语法错误。
PHP异常处理机制借鉴了java c++等,但是PHP的异常处理机制是不健全的。异常处理机制目的是将 程序正常执行的代码 与 出现异常如何处理的代码分离。
PHP是无法自动捕获异常的(绝大多数),只有主动抛出异常并捕捉。也就是说,对于异常,是可预见的。
以除数为0为例,看看PHP是如何处理的
<?php$a = 0;try { echo 4/$a;}catch (Exception $e){ echo $e->getMessage();}//报错,PHP是无法自动捕获异常的,必须手动抛出?>
下面手动抛出
<?php$a = 0;try { if($a == 0){ throw new Exception('除数不能为0', 1); } echo 4/$a;//不会执行}catch (Exception $e){ echo $e->getMessage();}?>
以看到,catch捕获到了异常。
PHP中对于异常的机制使用,一般用于业务逻辑判断上面,当业务逻辑不正常时,进行特殊处理。
下面看一下PHP错误处理机制。PHP提供了set_error_handler()函数进行错误处理。当错误发生时,set_error_handler会统一处理错误。
如下所示
<?php$a = 0;function handle($errno,$errstr,$errfile,$errline){ echo $errfile;}set_error_handler('handle'); echo 4/$a;echo PHP_EOL;echo 'hehe';?>
上面的
echo
4/
$a
;发生了错误,此时进入了错误处理函数handle中,进行错误处理,一般我们在handle中加入
die
,终止执行。
echo 4/$a; 将回报出一个 warning 级别的错误。
阅读全文
0 0
- 反射、错误与异常
- Java -- 错误与异常
- 异常与错误处理
- 错误与异常处理
- 异常与错误处理
- 错误与异常处理
- 错误与异常处理
- 错误与异常处理
- Python_Scrapy_6.错误与异常
- 异常与错误
- Lua 错误与异常
- 异常与错误1
- Python错误与异常
- 错误与异常
- 异常与错误0919
- python 错误与异常
- 错误与异常
- PHP错误与异常
- 初探C的结构体
- PHP&js获取数组中最接近数值的值
- volatile
- 关于mysql数据库的备份和恢复
- Opencv中Adaboost的具体实现及使用资料总结
- 错误与异常
- LightOJ
- springmvc设置接口后缀名
- 罗马数字转换阿拉伯数字0~3999
- 通过 FFMPEG,将字幕“烧进”MP4视频中
- jquery的Ajax
- StringUtils类中isEmpty与isBlank的区别
- 栈与队列、链表
- 数据库增删改查