应该捕获PHP未捕获的异常

时间:2018-04-22 21:13:05

标签: php try-catch

我在Ajax通话期间处理了一些PHP错误,并在Chrome控制台中收到以下消息:

An uncaught Exception was encountered
Type: Error

Message: Call to undefined function data()

Filename: /var/www/application/models/M_ajax.php

Line Number: 604

Backtrace:

File: /var/www/application/controllers/Global_fxns.php
Line: 47
Function: _4___signIn

File: /var/www/html/index.php
Line: 349
Function: require_once

问题是,它在try / catch块中。并且应该捕获PHP错误。例如,如果我在try块

中执行此代码
strlen();

代码按照您的预期捕获,因为strlen需要一个参数。但是没有发现这个错误。触发错误的代码行是

  

if(!$ this-> M_account-> addUserTrafficEvent($ userId,data(' Ymd> H:i:s'),2.1,'') ){

这是一个错误,因为我打算键入' date'而不是数据'使用PHP的日期功能,因为'数据'它不是一个创建错误的函数。为什么没有发现这个错误?使用PHP函数和用户定义的函数创建的错误之间是否存在某种差异,如果是这样,它是否应该被捕获?它会在所有

之后生成PHP错误消息

由于

1 个答案:

答案 0 :(得分:0)

从PHP 7开始,您可以使用 catch(错误$ err)

<?php
try {
    data('Y-m-d >H:i:s');
} catch (Exception $exc) {
    echo'Fatal exception catched: '.$exc->getMessage();
} catch (Error $err) {
    echo 'Fatal error catched: '.$err->getMessage();
}
?>

Checkout the Fiddle I've made for you