diff --git a/Server/ExceptionHandlerDispatcher.php b/Server/ExceptionHandlerDispatcher.php new file mode 100644 index 00000000..12fd5e98 --- /dev/null +++ b/Server/ExceptionHandlerDispatcher.php @@ -0,0 +1,30 @@ +getCode() == 0 ? 500 : $exception->getCode(); + $data = $code == 404 ? $exception->getMessage() : jTraceEx($exception, null, true); + return $response->setContent($data) + ->setFormat(CResponse::HTML) + ->setStatusCode($code); + } + +} diff --git a/Server/ExceptionHandlerInterface.php b/Server/ExceptionHandlerInterface.php new file mode 100644 index 00000000..5f7ca691 --- /dev/null +++ b/Server/ExceptionHandlerInterface.php @@ -0,0 +1,21 @@ +get(ExceptionHandlerDispatcher::class); + } + $this->exceptionHandler = $exceptionHandler; + } + + /** * UDPServerListener constructor. * @param Server|Port $server @@ -97,9 +124,7 @@ class HTTPServerListener extends Abstracts\Server } $responseData = $this->response->setContent($node->dispatch())->setStatusCode(200); } catch (Error | Throwable $exception) { - $code = $exception->getCode() == 0 ? 500 : $exception->getCode(); - $data = $code == 404 ? $exception->getMessage() : jTraceEx($exception,null,true); - $responseData = $this->response->setContent($data)->setFormat(CResponse::HTML)->setStatusCode($code); + $responseData = $this->exceptionHandler->emit($exception, $this->response); } finally { $response->end($responseData->configure($response)->getContent());