Codeception / module-yii2

Codeception module for Yii2 framework
MIT License
17 stars 35 forks source link

bug-yii2 ErrorHandler can not process when throw Error #106

Open saltdg opened 1 month ago

saltdg commented 1 month ago

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

SamMousa commented 1 month ago

Can you make a PR?

SamMousa commented 1 month ago

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?