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

      

  • 相关阅读:
    获取当前用户的网络状态--iOS
    网络请求 ---iOS
    一个小项目中需要注意的几个地方
    在项目中几个需要学习的知识
    简单三级联动的建立
    验证码在页面中的使用
    嘿嘿。今天学习了AJAX的几个方法
    状态保持以及AJAX的初步学习
    webform的学习(2)
    WebForm的初步认识
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10650845.html
Copyright © 2020-2023  润新知