set_exception_handler尝试捕获错误

时间:2017-02-20 10:28:52

标签: php

以下是我用来捕捉全局级错过的异常和错误的代码:

set_exception_handler( function( Exception $e ) {
    $exceptionCode = $e->getCode();

    switch ( $exceptionCode ) {
        case '42000': # Database
            FlashMessages::flashIt( 'message', 'There is a syntax error in the db query' );
            include( Settings::ABSPATH . '/src/views/message.php' );
            var_dump( $e );
            exit;
            break;
        default:
            FlashMessages::flashIt( 'message', 'Something unpredicted happened.' );
            include( Settings::ABSPATH . '/src/views/message.php' );
            var_dump( $e );
            exit;
            break;
    }
} );

set_error_handler( function( $errno, $errstr, $errfile, $errline ) {
    FlashMessages::flashIt( 'message', 'An error happened.' );
    include( Settings::ABSPATH . '/src/views/message.php' );
    var_dump( $errstr );
    exit;
} );

我的期望: set_exception_handler捕获的所有异常。 set_error_handler捕获的所有错误。

我拥有:set_exception_handler尝试捕获错误并生成问题:致命错误:未捕获TypeError:传递给{closure}()的参数1必须是Exception的实例,给出Error的实例

即使我完全删除了set_exception_handler,

set_error_handler也不会捕获此类错误。

问题:如何从这些全局函数中捕获这两种函数错过的错误?

1 个答案:

答案 0 :(得分:1)