PHP 错误与异常 笔记与总结(12 )异常
2015-07-02 00:09
676 查看
① 异常的概念;异常和错误的区别
PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制。PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念。
② 异常的语法结构
【例1】
捕获异常的前提是要 手动抛出异常(throw new Exception())。
页面输出:
语法结构:把需要测试的代码放到 try 代码段中,然后通过 catch 来捕获异常(可以在 catch 代码段中进行操作,例如输出异常信息);在 try 代码段的 throw 语句之后的代码不会被执行。当异常抛出后,立即寻找第一个与之匹配的捕获到的异常。
【例2】在使用 PDO 异常处理类时,不需要手动抛出异常即可捕获异常,例如当数据库密码错误时,系统会自动捕获异常(使用了内置异常类):
页面输出:
【例3】再例如 SPL(Standard PHP Library(PHP标准库),可以参考《PHP SPL笔记》)的异常处理,同样不需要手动抛出异常(使用了内置异常类):
页面输出:
③ 自定义异常类
④ 自定义异常处理器
⑤ 如何像处理异常一样处理 PHP 中的错误
⑥ 在发生错误的时候将用户重定向到另一个页面
PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制。PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念。
② 异常的语法结构
【例1】
<?php header('content-type:text/html; charset=utf-8'); /* try{ 要测试的代码段; throw new Exception('异常信息'); }catch(Exception $e){ echo $e->getMessage(); } */ //显示所有错误 error_reporting(-1); try{ $num1 = 1; $num2 = 2; if( 2 == $num2 ){ //抛出异常 throw new Exception('0不能当作除数'); }else{ $num = $num1 / $num2; } }catch(Exception $e){ //捕获异常 echo $e->getMessage(); } echo 'continue';
捕获异常的前提是要 手动抛出异常(throw new Exception())。
页面输出:
0不能当作除数continue
语法结构:把需要测试的代码放到 try 代码段中,然后通过 catch 来捕获异常(可以在 catch 代码段中进行操作,例如输出异常信息);在 try 代码段的 throw 语句之后的代码不会被执行。当异常抛出后,立即寻找第一个与之匹配的捕获到的异常。
【例2】在使用 PDO 异常处理类时,不需要手动抛出异常即可捕获异常,例如当数据库密码错误时,系统会自动捕获异常(使用了内置异常类):
<?php try{ $pdo = new Pdo('mysql:host = localhost; dbname = test', 'root', '123'); var_dump($pdo); }catch(PDOException $e){ echo $e->getMessage(); } echo 'continue';
页面输出:
SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)continue
【例3】再例如 SPL(Standard PHP Library(PHP标准库),可以参考《PHP SPL笔记》)的异常处理,同样不需要手动抛出异常(使用了内置异常类):
<?php try{ $splObj = new SPLFileObject('test.txt', 'r');//以“读”的方式打开test.txt(不存在) echo 'read file'; }catch(Exception $e){ echo $e->getMessage(); } echo 'continue';
页面输出:
SplFileObject::__construct(test.txt) [splfileobject.--construct]: failed to open stream: No such file or directorycontinue
③ 自定义异常类
④ 自定义异常处理器
⑤ 如何像处理异常一样处理 PHP 中的错误
⑥ 在发生错误的时候将用户重定向到另一个页面
相关文章推荐
- PHP开发环境搭建
- PHP中使用curl入门教程
- PHP curl使用实例
- PHP中的流(streams)浅析
- mod_php、FastCGI、PHP-FPM等PHP运行方式对比
- php统计数组元素个数的方法
- PHP中iconv函数知识汇总
- PHP+JS实现大规模数据提交的方法
- PHP中的命名空间详细介绍
- PHP输出缓冲控制Output Control系列函数详解
- PHP.ini安全配置检测工具pcc简单介绍
- PHP中foreach()用法汇总
- php三元运算符知识汇总
- PHP的Socket通信之UDP通信实例
- php逐行读取txt文件写入数组的方法 原创
- thinkphp (智美云)判断图片是否存在
- 十天学会php之第三天
- 十天学会php之第四天
- php中使用mysql、mysqli、pdo的比较
- php建表管理、发送url实现会员找回密码功能