Skip to content

Commit 532b776

Browse files
Merge branch '6.4' into 7.0
* 6.4: Fix symfony/deprecation-contracts require [Console][Messenger] add `RunCommandMessage` and `RunCommandMessageHandler` Allow accessing all options on a handler descriptor [Notifier] [SpotHit] Support `smslong` and `smslongnbr` API parameters Remove 6.2 from the list of potential branch targets Bump Symfony version to 6.3.3 Update VERSION for 6.3.2 Update CHANGELOG for 6.3.2 Bump Symfony version to 5.4.27 Update VERSION for 5.4.26 Update CONTRIBUTORS for 5.4.26 Update CHANGELOG for 5.4.26 Fix update slack messages documentation Fix symfony/deprecation-contracts require [Scheduler] Postpone schedule creation [VarDumper] Dump uninitialized properties [HttpKernel] Enhance exception if possible [Validator] Update `Type` constraint, add `number`, `finite-float` and `finite-number` validations
2 parents 1cea1a2 + 7312206 commit 532b776

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

ErrorHandler.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -517,14 +517,7 @@ public function handleException(\Throwable $exception): void
517517
}
518518
}
519519

520-
if (!$exception instanceof OutOfMemoryError) {
521-
foreach ($this->getErrorEnhancers() as $errorEnhancer) {
522-
if ($e = $errorEnhancer->enhance($exception)) {
523-
$exception = $e;
524-
break;
525-
}
526-
}
527-
}
520+
$exception = $this->enhanceError($exception);
528521

529522
$exceptionHandler = $this->exceptionHandler;
530523
$this->exceptionHandler = [$this, 'renderException'];
@@ -662,6 +655,21 @@ private function renderException(\Throwable $exception): void
662655
echo $exception->getAsString();
663656
}
664657

658+
public function enhanceError(\Throwable $exception): \Throwable
659+
{
660+
if ($exception instanceof OutOfMemoryError) {
661+
return $exception;
662+
}
663+
664+
foreach ($this->getErrorEnhancers() as $errorEnhancer) {
665+
if ($e = $errorEnhancer->enhance($exception)) {
666+
return $e;
667+
}
668+
}
669+
670+
return $exception;
671+
}
672+
665673
/**
666674
* Override this method if you want to define more error enhancers.
667675
*

Tests/ErrorHandlerTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,13 +363,14 @@ public function testHandleDeprecation()
363363
/**
364364
* @dataProvider handleExceptionProvider
365365
*/
366-
public function testHandleException(string $expectedMessage, \Throwable $exception)
366+
public function testHandleException(string $expectedMessage, \Throwable $exception, string $enhancedMessage = null)
367367
{
368368
try {
369369
$logger = $this->createMock(LoggerInterface::class);
370370
$handler = ErrorHandler::register();
371371

372372
$logArgCheck = function ($level, $message, $context) use ($expectedMessage, $exception) {
373+
$this->assertSame('critical', $level);
373374
$this->assertSame($expectedMessage, $message);
374375
$this->assertArrayHasKey('exception', $context);
375376
$this->assertInstanceOf($exception::class, $context['exception']);
@@ -388,11 +389,13 @@ public function testHandleException(string $expectedMessage, \Throwable $excepti
388389
$handler->handleException($exception);
389390
$this->fail('Exception expected');
390391
} catch (\Throwable $e) {
391-
$this->assertSame($exception, $e);
392+
$this->assertInstanceOf($exception::class, $e);
393+
$this->assertSame($enhancedMessage ?? $exception->getMessage(), $e->getMessage());
392394
}
393395

394-
$handler->setExceptionHandler(function ($e) use ($exception) {
395-
$this->assertSame($exception, $e);
396+
$handler->setExceptionHandler(function ($e) use ($exception, $enhancedMessage) {
397+
$this->assertInstanceOf($exception::class, $e);
398+
$this->assertSame($enhancedMessage ?? $exception->getMessage(), $e->getMessage());
396399
});
397400

398401
$handler->handleException($exception);
@@ -412,6 +415,11 @@ public static function handleExceptionProvider(): array
412415
})::class.' bar')],
413416
['Uncaught Error: bar', new \Error('bar')],
414417
['Uncaught ccc', new \ErrorException('ccc')],
418+
[
419+
'Uncaught Error: Class "App\Controller\ClassDoesNotExist" not found',
420+
new \Error('Class "App\Controller\ClassDoesNotExist" not found'),
421+
"Attempted to load class \"ClassDoesNotExist\" from namespace \"App\Controller\".\nDid you forget a \"use\" statement for another namespace?",
422+
],
415423
];
416424
}
417425

0 commit comments

Comments
 (0)