最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

php的异常处理基础方法

时间:2014-06-09 16:40来源: 作者: 点击: 次
下面来介绍一下关于php中异常处理的方法介绍,有需要学习的异常处理的朋友可参考本教程. 以下是引用片段: 1.允许一个方法给出一个出错标记给客户代码 2.提供程序错误的详细信息 3.让你同时

下面来介绍一下关于php中异常处理的方法介绍,有需要学习的异常处理的朋友可参考本教程.

以下是引用片段:

1.允许一个方法给出一个出错标记给客户代码 

2.提供程序错误的详细信息 

3.让你同时判断多个出错条件,将你的错误报告和程序处理流程分开.

4.返回值必须是独立的类型,不会与正常返回的类型相混淆

两个实例掌握PHP异常处理

例【1】用 try...catch

实例代码如下:

  1. /* PDO连接mysql数据库,如果没看过PDO,先看下PDO的构造函数,要不跳过例1看例2 */  
  2. $dsn = 'mysql:host=localhost;dbname=testdb';  
  3. $user = 'dbuser';  
  4. $password = 'dbpass';  
  5. try {  
  6. $dbh = new PDO($dsn, $user, $password); //创建数据库连接对象容易出现异常  
  7. echo '如果上面出现异常就不能显示我了';  
  8. } catch (PDOException $e) {  
  9. echo 'Connection failed: ' . $e->__toString();  
  10. }  
  11. ?> 

实例代码如下:

  1. <?php  
  2. //例[2] try..cathc 和 throw一起用  
  3. try {  
  4. $error = '我抛出异常信息,并且跳出try块';  
  5. if(is_dir('./tests')){  
  6. echo 'do sth.';  
  7. }else{  
  8. throw new Exception($error,12345);  
  9. }  
  10. echo '上面有异常的话就轮不到我了!~<br />',"n";  
  11. } catch (Exception $e) {  
  12. echo '捕获异常: ', $e->getMessage(),$e->getCode(), "n<br />"; //显示$error和123456  
  13. }  
  14. echo '继续执行';  
  15. ?> 

上面一个朋友说的,下面我自己来写了点程序练习一下:

实例代码如下:

  1. $a = 20; 
  2. // 使用常规catch的例子 
  3. try  
  4. { 
  5.   if($a == 1) 
  6.   { 
  7.     throw new Exception("I am 1", 1); 
  8.   } 
  9.   elseif ($a == 2) 
  10.   { 
  11.     throw new Exception("I am 2", 3); 
  12.   } 
  13.   elseif ($a == 3) 
  14.   { 
  15.     throw new Exception("I am 3", 3); 
  16.   } 
  17.   elseif ($a == 4) 
  18.   { 
  19.     throw new Exception("I am 4", 4); 
  20.   } 
  21.   else 
  22.   { 
  23.     throw new Exception("Who am I ?", 0); 
  24.   } 
  25. } 
  26. catch (Exception $e) 
  27. { 
  28.   if($e->getCode() == 1) 
  29.   { 
  30.     echo "1 : ".$e; 
  31.   } 
  32.   elseif ($e->getCode() == 2) 
  33.   { 
  34.     echo "2 : ".$e; 
  35.   } 
  36.   elseif ($e->getCode() == 3) 
  37.   { 
  38.     echo "3 : ".$e; 
  39.   } 
  40.   elseif ($e->getCode() == 4) 
  41.   { 
  42.     echo "4 : ".$e; 
  43.   } 
  44.   else 
  45.   { 
  46.     echo "0 : ".$e; 
  47.   } 
  48. } 
  49. echo " 
  50.  
  51. -------------------------------------------------------------------------------- 
  52. "; 
  53. // 使用不同的扩展异常类的例子 
  54. class A extends Exception{}; 
  55. class B extends Exception{}; 
  56. try 
  57. { 
  58.  if($a == 1) 
  59.   { 
  60.     throw new A("I am A", 1); 
  61.   } 
  62.   elseif ($a == 2) 
  63.   { 
  64.     throw new B("I am B", 2); 
  65.   } 
  66.   else 
  67.   { 
  68.     throw new Exception("Who am I ?", 0); 
  69.   } 
  70. } 
  71. catch (A $e) 
  72. { 
  73.   echo "1 : ".$e; 
  74. } 
  75. catch (B $e) 
  76. { 
  77.   echo "2 : ".$e; 
  78. } 
  79. catch (Exception $e) 
  80. { 
  81.   echo "0 : ".$e; 
  82. } 
  83. ?>  

输出如下:

以下是引用片段:

0 : exception 'Exception' with message 'Who am I ?' in |

D:WebPHPWWWnewtest.php:24 Stack trace: #0 {main}

----------------------------------------------------------------------------

0 : exception 'Exception' with message 'Who am I ?' in D:WebPHPWWWnewtest.php:69 Stack trace: #0 {main} 

(责任编辑:admin)
------分隔线----------------------------
栏目列表
推荐内容