当前位置:Gxlcms > PHP教程 > 什么是PHP异常处理

什么是PHP异常处理

时间:2021-07-01 10:21:17 帮助过:4人阅读

本文主要和大家介绍PHP异常处理定义与使用方法,较为详细的分析了php异常处理的定义、使用方法及相关注意事项,需要的朋友可以参考下,希望能帮助到大家。


  1. <?php
  2. //php5提供了基本的异常处理类,可直接使用 ,不需要自己再定义
  3. // class Exception
  4. // {
  5. // protected $message = 'Unknown exception'; // 异常信息
  6. // protected $code = 0; // 用户自定义异常代码
  7. // protected $file; // 发生异常的文件名
  8. // protected $line; // 发生异常的代码行号
  9. // function __construct($message = null, $code = 0);
  10. // final function getMessage(); // 返回异常信息
  11. // final function getCode(); // 返回异常代码
  12. // final function getFile(); // 返回发生异常的文件名
  13. // final function getLine(); // 返回发生异常的代码行号
  14. // final function getTrace(); // backtrace() 数组
  15. // final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
  16. // /* 可重载的方法 */
  17. // function __toString(); // 可
输出的字符串 // } ?>


  1. <?php
  2. //定义一个顶级异常处理
  3. function my_exception($e){
  4. echo "我是顶级异常处理".$e->getMessage();
  5. }
  6. //修改默认的顶级异常处理函数(器)
  7. set_exception_handler("my_exception");
  8. //我们使用异常机制
  9. try{
  10. addUser("shunping");
  11. updateUser("xiaoming1");
  12. }
  13. //catch用来 捕获异常, Exception 是异常类(是php定义好一个类)
  14. catch(Exception $e){
  15. //返回异常信息
  16. echo "返回异常信息(失败信息) =".$e->getMessage()."<br/>";
  17. echo "返回异常代码 =".$e->getCode()."<br/>";
  18. echo "返回发生异常的文件名 =".$e->getFile()."<br/>";
  19. echo "返回发生异常的代码行号 =".$e->getLine()."<br/>";
  20. //echo " =".$e->getTrace()."<br/>"; // backtrace() 数组
  21. //可以继续抛出,这时将会启动php默认的异常处理器来处理
  22. //你也可以自己定义一个顶级异常处理器,对其进行处理
  23. throw $e;
  24. }
  25. function addUser($username){
  26. if($username=="shunping"){
  27. //添加ok
  28. echo "ok1";
  29. }else{
  30. //添加error
  31. //抛出异常.
  32. throw new Exception("添加失败");
  33. }
  34. }
  35. function updateUser($username){
  36. if($username=="xiaoming"){
  37. //正常修改
  38. echo "ok2";
  39. }else{
  40. //平抛出异常
  41. throw new Exception("修改失败");
  42. }
  43. }
  44. ?>

异常使用的注意事项 :

通过上面的案例,我们可以看出,使用


  1. try{
  2. //代码
  3. }catch(Exception $e){
  4. //对异常处理
  5. }

这种方式,可以更有效的控制错误.所以在开发中大量的使用.

1. 当捕获到一个异常后,try{} 块里的后续代码不继续执行.
2. 如果有一个异常发生,但是你没有catch 捕获,则提示一个Uncaught Exception.(系统.)
3. 当catch一个异常,你可以处理,也可以不处理,不处理就可以
throw new Exception("信息");

4. 你可以自定义异常类


  1. class MyException extends Exception {
  2. }

5. 使用多个 catch 代码块可以捕获不同种类的异常


  1. try{
  2. //代码....
  3. //第一句话
  4. //第二句话
  5. }catch(PDOException $e){
  6. //
  7. }catch(Exception $e){
  8. |
  9. }

6. 也可简单使用 Exception 捕获

代码说明:


  1. <?php
  2. //定义了一个异常
  3. class MyException1 extends Exception{
  4. }
  5. class MyException2 extends Exception{
  6. }
  7. function A(){
  8. throw new MyException1("a");
  9. }
  10. function B(){
  11. throw new MyException2("b")
  12. }
  13. function C(){
  14. try{
  15. A();//抛出MyException1
  16. B();//抛出MyException2
  17. }catch(Exception1 $e1){
  18. $e1->getMessage();
  19. }catch(Exception2 $e2){
  20. $e2->getMesage();
  21. }
  22. }
  23. ?>

异常的规则

需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
使用多个 catch 代码块可以捕获不同种类的异常。
可以在 try 代码块内的 catch 代码块中抛出(再次抛出)异常。
简而言之:如果抛出了异常,就必须捕获它。或者使用顶级异常处理器处理。
如果不抛,即使有异常也不会捕获,不会处理

相关推荐:

NodeJs数据库异常处理解析

PHP7错误处理与异常处理方法

PHP异常处理器的自定义

以上就是什么是PHP异常处理的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行