如何在Slim框架中處理異常

小樊
83
2024-07-23 01:11:09
欄目: 編程語言

在Slim框架中,可以通過注冊(cè)一個(gè)自定義的錯(cuò)誤處理程序來處理異常??梢允褂肧lim框架提供的add()方法來注冊(cè)錯(cuò)誤處理程序。以下是一個(gè)處理異常的示例代碼:

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();

// 添加錯(cuò)誤處理程序
$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();

在上面的示例中,我們定義了一個(gè)自定義的錯(cuò)誤處理程序$customErrorHandler,它會(huì)接收請(qǐng)求、響應(yīng)和異常對(duì)象作為參數(shù),并返回一個(gè)帶有錯(cuò)誤消息的JSON響應(yīng)。然后,我們通過add()方法將錯(cuò)誤處理程序注冊(cè)到應(yīng)用中。

當(dāng)訪問根路由/時(shí),我們拋出一個(gè)異常,然后錯(cuò)誤處理程序會(huì)捕獲這個(gè)異常并返回相應(yīng)的錯(cuò)誤響應(yīng)。Slim框架會(huì)自動(dòng)調(diào)用注冊(cè)的錯(cuò)誤處理程序來處理異常。

0