0
在线手册:中文 英文

无差异的捕捉错误

<?php
// 结束时调用.
register_shutdown_function($env 'env_logs',true);
// 当有流程代码问题时调用
set_error_handler($env,E_ALL);
//类异常调用.
set_exception_handler($env);

function 
env_logs($errno=,  $errstr=,  $errfile=,  $errline=0){ 
    
// 可以引入外部类库.
    
global $db
    
    
// 函数可能会调用多次, 所以变量需要静态化.
    
static $logdata ''
    
$log ''
    
$date date('Y-m-d H:i:s',time()); 
    
$error_array = array();
    
// 判断是否为类
    
if(is_object($errno)){ 
        
$error_array['type'] = get_class($errno); 
        
$error_array['message'] = $errno->getMessage(); 
        
$error_array['file'] = $errno->getFile(); 
        
$error_array['line'] = $errno->getLine();   
    }else if(
$errno && $errfile){ // 两个实体参数为
        
$error_array['type'] = $errno
        
$error_array['message'] = $errstr
        
$error_array['file'] = $errfile
        
$error_array['line'] = $errline
    }else{ 
        
$error_array error_get_last(); // 返回的也是一个数组.
        
$error_array = array();
        
// register_shutdown_function 
    

    
    
// 处理过程.
    
    // 切记返回true, 否则会影响流程.
    
return true;
}

PHP7 try catch 也非常强大

<?php
error_reporting 
E_ALL  ^  E_NOTICE );
try { 
    
//throw new Exception('1111'); #Exception    
    //echo strlen(array()); #error 
    // echo 1/0; #error 
    //echo $bbbb; #error 
    
echo ABC
    
// trigger_error('中文错误...'); #error 
    //echo highlight_string('<?php echo 008', true); # ParseError  
   // trigger_error ( "Incorrect input vector, array of values expected" ,  E_USER_WARNING ); # error 
   // explode(); #error 
} catch (Throwable $e) { // Throwable 
     
    //print_r($e->getTraceAsString()); 
     
    
print_r($e); 


exit(); 
基本上这两套设计放入项目中, 各类bug,异常, 提示均可以抓取到, 慢慢修复即可.
0
在线手册:中文 英文