Php set_异常处理程序试图捕获错误

Php set_异常处理程序试图捕获错误,php,Php,以下是我用于在全局级别捕获遗漏的异常和错误的代码: set_exception_handler( function( Exception $e ) { $exceptionCode = $e->getCode(); switch ( $exceptionCode ) { case '42000': # Database FlashMessages::flashIt( 'message', 'There is a syntax err

以下是我用于在全局级别捕获遗漏的异常和错误的代码:

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_处理程序试图捕获错误并生成问题:致命错误:未捕获类型错误:传递给{closure}()的参数1必须是异常实例,给定的错误实例

即使我完全删除了set\u exception\u处理程序,set\u error\u处理程序也不会捕获此类错误


问:我如何从这些全局函数中发现这两个函数都忽略的错误类型

将异常处理程序参数类型从
exception
更改为
Throwable