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

      

  • 相关阅读:
    ZXing 生成、解析二维码图片的小示例
    OpenLDAP 2.4.x源码安装配置
    Elasticsearch & Kibana with Shield
    Kibana SSL
    Kibana 官方示例
    ELK 处理分析日志(nginx,syslog)
    Elasticsearch 负载均衡集群
    Elasticsearch REST API小记
    ELK 安装配置
    ELK 安装配置
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10650845.html
Copyright © 2011-2022 走看看