在Slim框架中,可以通過注冊一個自定義的錯誤處理程序來處理異常。可以使用Slim框架提供的add()
方法來注冊錯誤處理程序。以下是一個處理異常的示例代碼:
use Slim\Factory\AppFactory;
use Slim\Exception\HttpNotFoundException;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
require __DIR__ . '/vendor/autoload.php';
$app = AppFactory::create();
// 添加錯誤處理程序
$customErrorHandler = function (
Request $request,
Response $response,
\Throwable $exception
) use ($app) {
$payload = ['error' => $exception->getMessage()];
$response->getBody()->write(json_encode($payload));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(500);
};
$app->addErrorMiddleware(true, true, true);
$app->add($customErrorHandler);
$app->get('/', function (Request $request, Response $response) {
throw new \Exception('An error occurred!');
});
$app->run();
在上面的示例中,我們定義了一個自定義的錯誤處理程序$customErrorHandler
,它會接收請求、響應和異常對象作為參數,并返回一個帶有錯誤消息的JSON響應。然后,我們通過add()
方法將錯誤處理程序注冊到應用中。
當訪問根路由/
時,我們拋出一個異常,然后錯誤處理程序會捕獲這個異常并返回相應的錯誤響應。Slim框架會自動調用注冊的錯誤處理程序來處理異常。