Skip to content

[Debug] ErrorHandler::setLoggers() fatals if a buffered exception is not an ErrorException #21304

Closed
@skalpa

Description

@skalpa
Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no
Symfony version 3.2.2

If the bootstrapping logger is buffering an exception that does not extend ErrorException, calling ErrorHandler::setDefaultLogger() or ErrorHandler::setLogger() results in Fatal error: Call to undefined method \Foo\ExceptionClass::getSeverity() in /.../vendor/symfony/debug/ErrorHandler.php on line 228

Steps to reproduce:

use Monolog\Logger;
use Symfony\Component\Debug\BufferingLogger;
use Symfony\Component\Debug\ErrorHandler;

require './vendor/autoload.php';

$handler = ErrorHandler::register(new ErrorHandler(new BufferingLogger()));

$handler->setExceptionHandler(function () use ($handler) {
    $handler->setDefaultLogger(new Logger('log'));
});

throw new \Exception();

Easy peasy fix:

$type = $log[2]['exception']->getSeverity();

to

$type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : E_ERROR;

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions