PHP 異常處理使用 Middleware 異常處理中間件,允許在應用程式的任何層處理異常,無需在每個控制器中明確處理。步驟如下:安裝 Symfony/error-handler 函式庫。建立一個實作 Middleware 介面的中間件類別。在應用程式中註冊中間件。
##引言
異常是我們編碼時必須面對的現實。在 PHP 中,可以使用try-catch 語句或
set_exception_handler 來處理例外狀況。然而,當業務規模成長時,這兩種方法變得繁瑣且難以維護。 Middleware 異常處理中間件提供了一種優雅且可擴展的方法來處理 PHP 應用程式中的異常。
何為 Middleware?
中間件是在請求和回應之間執行的程式碼片段。它負責在請求處理之前或之後執行操作。異常處理中間件允許我們在應用程式的任何層處理異常,而無需在每個控制器或方法中明確處理它們。使用Middleware 例外處理
步驟1:安裝
composer require symfony/error-handler
步驟2:建立中間件
use Symfony\Component\ErrorHandler\Middleware\ErrorMiddleware; class ExceptionMiddleware { public function __invoke(Request $request, RequestHandler $handler) { try { return $handler->handle($request); } catch (\Exception $e) { // 处理异常 return new Response($e->getMessage(), 500); } } }
步驟3:註冊中間件
//Slim 4 $app->add(new ExceptionMiddleware()); // Laravel 8+ Route::middleware(['exception_middleware'])->group(function () { // ... });
#實戰案例
讓我們考慮一個簡單的CRUD 應用程序。在建立新記錄時,如果輸入的日期無效,我們需要傳回錯誤訊息。// Controller // .... try { $entity->setDate($request->get('date')); } catch (InvalidDateFormatException $e) { return new Response($e->getMessage(), 400); }
// Middleware class ExceptionMiddleware { public function __invoke(Request $request, RequestHandler $handler) { try { return $handler->handle($request); } catch (InvalidDateFormatException $e) { // 处理异常 return new Response( json_encode(['error' => $e->getMessage()]), 400, ['Content-Type' => 'application/json'] ); } } }
以上是PHP異常處理:使用Middleware異常處理中介軟體的詳細內容。更多資訊請關注PHP中文網其他相關文章!