zoukankan      html  css  js  c++  java
  • [PHP] try catch在日常中的使用

    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){}
    

      

  • 相关阅读:
    软件工程实践2020_个人作业 —— 软件评测
    软件工程实践2020_结对第二次作业 —— 某次疫情统计可视化的实现
    最受欢迎的 Git 分支工作流
    结对编程作业
    软件案例分析作业
    个人项目
    个人博客作业1
    第一次作业-热身!
    面向对象第三单元
    电梯作业总结
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10650845.html
Copyright © 2011-2022 走看看