当前位置:首页 > PHP教程 > php应用 > 列表

try catch在PHP中的使用

发布:smiling 来源: PHP粉丝网  添加日期:2020-02-18 10:14:45 浏览: 评论:0 
1.try catch可以捕获上一层throw的异常
2.finally是不管try或者catch任何一块有return, 最终都会执行的块
 
3.try也是可以捕获到call_user_func_array回调函数类内部的throw的异常
 
4.call_user_func_array只能回调类的静态方法,可以在这个静态方法中进行new对象
 
5.在不自定义任何错误处理函数的情况下,try是不能捕获php本身的错误的,包括notice warning error等级别
 
下面的代码是项目中的一个部分,经过了多层调用和回调
  1. <?php 
  2.  
  3. class Oss { 
  4.  
  5.     public static function connect() { 
  6.  
  7.         throw new Exception("oss connect error"); 
  8.  
  9.         return 'oss object'
  10.  
  11.     } 
  12.  
  13.  
  14. //调用三层 
  15.  
  16. class S3{ 
  17.  
  18.     public static function connect() { 
  19.  
  20.         //throw new Exception("s3 connect error"); 
  21.  
  22.         return 's3 object'
  23.  
  24.     } 
  25.  
  26.  
  27. //调用二层 
  28.  
  29. function callReader($class,$url){ 
  30.  
  31.     try{ 
  32.  
  33.         $conn=call_user_func_array(array($class"connect"),array()); 
  34.  
  35.         return $conn
  36.  
  37.     }catch(Exception $e){ 
  38.  
  39.         throw $e;    
  40.  
  41.     }finally{ 
  42.  
  43.         //无论如何都会执行,在这记录日志 
  44.  
  45.     } 
  46.  
  47.  
  48. //调用一层 
  49.  
  50. function getMessage(){ 
  51.  
  52.     $conn=null; 
  53.  
  54.     try { 
  55.  
  56.         $conn=callReader('Oss',"http://xxxx"); 
  57.  
  58.     } catch (Exception $e1) { 
  59.  
  60.         $conn=callReader('S3',"http://xxxx"); 
  61.  
  62.     } 
  63.  
  64.     return $conn
  65.  
  66.  
  67. //最先的入口 
  68. //phpfensi.com 
  69. try{ 
  70.  
  71.     var_dump(getMessage()); 
  72.  
  73. }catch(Exception $e){} 

Tags: try catch

分享到: