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等级别

下面的代码是项目中的一个部分,经过了多层调用和回调

<?php

class Oss {
public static function connect() {
throw new Exception("oss connect error");
return 'oss object';
}
}
//调用三层
class S3{
public static function connect() {
//throw new Exception("s3 connect error");
return 's3 object';
}
}
//调用二层
function callReader($class,$url){
try{
$conn=call_user_func_array(array($class, "connect"),array());
return $conn;
}catch(Exception $e){
throw $e;
}finally{
//无论如何都会执行,在这记录日志
}
}
//调用一层
function getMessage(){
$conn=null;
try {
$conn=callReader('Oss',"http://xxxx");
} catch (Exception $e1) {
$conn=callReader('S3',"http://xxxx");
}
return $conn;
} //最先的入口
try{
var_dump(getMessage());
}catch(Exception $e){}

  

最新文章

  1. Linux下java进程CPU占用率高分析方法
  2. Instant Complexity - POJ1472
  3. WP8图片缩放功能实现
  4. handlebars
  5. Vijos p1518 河流 转二叉树左儿子又兄弟
  6. [转]Apache Maven 入门篇 ( 上 )
  7. UNIX基础知识之用户标识
  8. windows下配置wnmp
  9. POJ 2431 Expedition (贪心+优先队列)
  10. 【FAQ系列】关于SQL_Errno:1677导致主从复制中断的思考和实践
  11. 神经网络1_neuron network原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)
  12. Class.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系
  13. Go语言 并发编程
  14. 解决Tomcat文件上传超时问题.
  15. jsencrypt加密
  16. STEM 是个怎样高大上的东西?
  17. Android数据存储之SQLite 数据库学习
  18. bzoj 3622 DP + 容斥
  19. php源码审计
  20. 使用Unity创建塔防游戏(Part3)—— 项目总结

热门文章

  1. 在vue中使用sass的配置的方法
  2. Win10系统下在国内访问Tensorflow官网
  3. Java作业五(2017-10-15)
  4. rem布局完成响应式开发,通俗且详细的原理解析和代码实现
  5. JavaScript基础系列
  6. [Swift]LeetCode61. 旋转链表 | Rotate List
  7. [Swift]LeetCode105. 从前序与中序遍历序列构造二叉树 | Construct Binary Tree from Preorder and Inorder Traversal
  8. [Swift]LeetCode1013. 将数组分成和相等的三个部分 | Partition Array Into Three Parts With Equal Sum
  9. Java部署项目命令学习小结
  10. git入门笔记汇总——(廖雪峰博客git入门)