|
12 | 12 | use Neuron\Log\Log; |
13 | 13 | use Neuron\Mvc\Controllers\Factory; |
14 | 14 | use Neuron\Mvc\Events\Http404; |
| 15 | +use Neuron\Mvc\Events\Http500; |
15 | 16 | use Neuron\Mvc\Requests\Request; |
16 | 17 | use Neuron\Patterns\Registry; |
17 | 18 | use Neuron\Routing\RequestMethod; |
@@ -235,7 +236,7 @@ protected function onRun() : void |
235 | 236 | $route = $params['REQUEST_URI'] ?? '/'; |
236 | 237 | $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown'; |
237 | 238 |
|
238 | | - \Neuron\Application\CrossCutting\Event::emit( new Events\RequestReceivedEvent( |
| 239 | + Event::emit( new Events\RequestReceivedEvent( |
239 | 240 | $method, |
240 | 241 | $route, |
241 | 242 | $ip, |
@@ -318,6 +319,38 @@ public function executeController( array $parameters, string $requestName = '' ) |
318 | 319 | ) |
319 | 320 | ); |
320 | 321 | } |
| 322 | + catch( \Throwable $e ) |
| 323 | + { |
| 324 | + Log::error( "Exception in controller: " . $e->getMessage() ); |
| 325 | + |
| 326 | + Event::emit( new Http500( |
| 327 | + $parameters['route'] ?? 'unknown', |
| 328 | + get_class( $e ), |
| 329 | + $e->getMessage(), |
| 330 | + $e->getFile(), |
| 331 | + $e->getLine() |
| 332 | + ) ); |
| 333 | + |
| 334 | + $this->onCrash( |
| 335 | + [ |
| 336 | + 'type' => get_class( $e ), |
| 337 | + 'message' => $e->getMessage(), |
| 338 | + 'file' => $e->getFile(), |
| 339 | + 'line' => $e->getLine() |
| 340 | + ] |
| 341 | + ); |
| 342 | + |
| 343 | + return $this->executeController( |
| 344 | + array_merge( |
| 345 | + $parameters, |
| 346 | + [ |
| 347 | + "Controller" => "Neuron\Mvc\Controllers\HttpCodes@code500", |
| 348 | + "error" => $e->getMessage(), |
| 349 | + "type" => get_class( $e ) |
| 350 | + ] |
| 351 | + ) |
| 352 | + ); |
| 353 | + } |
321 | 354 | } |
322 | 355 |
|
323 | 356 | /** |
|
0 commit comments