module-yii2 icon indicating copy to clipboard operation
module-yii2 copied to clipboard

bug-yii2 ErrorHandler can not process when throw Error

Open saltdg opened this issue 1 year ago • 2 comments

try { $response = $app->handleRequest($yiiRequest); } catch (\Exception $e) { // can't catch Error and not passed to yii2 ErrorHandler processing. }

saltdg avatar Sep 24 '24 10:09 saltdg

Can you make a PR?

SamMousa avatar Sep 24 '24 10:09 SamMousa

While reviewing the PR I got to thinking on whether we should change this at all.

Currently the idea is as follows:

  1. Exceptions should not bubble out of your application they should be caught.
  2. In production your ErrorHandler will catch all errors and handle them, but they are still errors.
  3. Exceptions to rule 1 are specific exception classes that are explicitly thrown by the developer, children of UserException.

By passing all errors to the error handler we significantly change this behavior.

In my opinion all tests should fail if you have an error (like a TypeError) in your code. This should never ship to production.

Of course then you're left with a challenge on how to test that your error handler works as expected in cases where such a bug does end up in production. While we know that the error handler itself works it is not unreasonable to want to test your specific configuration of it.

Can you share your thoughts on this?

SamMousa avatar Sep 25 '24 09:09 SamMousa