[PHP] try catch在日常中的使用
2024-10-20 17:22:43
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){}
最新文章
- Linux下java进程CPU占用率高分析方法
- Instant Complexity - POJ1472
- WP8图片缩放功能实现
- handlebars
- Vijos p1518 河流 转二叉树左儿子又兄弟
- [转]Apache Maven 入门篇 ( 上 )
- UNIX基础知识之用户标识
- windows下配置wnmp
- POJ 2431 Expedition (贪心+优先队列)
- 【FAQ系列】关于SQL_Errno:1677导致主从复制中断的思考和实践
- 神经网络1_neuron network原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)
- Class.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系
- Go语言 并发编程
- 解决Tomcat文件上传超时问题.
- jsencrypt加密
- STEM 是个怎样高大上的东西?
- Android数据存储之SQLite 数据库学习
- bzoj 3622 DP + 容斥
- php源码审计
- 使用Unity创建塔防游戏(Part3)—— 项目总结
热门文章
- 在vue中使用sass的配置的方法
- Win10系统下在国内访问Tensorflow官网
- Java作业五(2017-10-15)
- rem布局完成响应式开发,通俗且详细的原理解析和代码实现
- JavaScript基础系列
- [Swift]LeetCode61. 旋转链表 | Rotate List
- [Swift]LeetCode105. 从前序与中序遍历序列构造二叉树 | Construct Binary Tree from Preorder and Inorder Traversal
- [Swift]LeetCode1013. 将数组分成和相等的三个部分 | Partition Array Into Three Parts With Equal Sum
- Java部署项目命令学习小结
- git入门笔记汇总——(廖雪峰博客git入门)