昨天使用 Postman 測試,最後再次按下 Send
狀態顯示 404 並出現報錯訊息,因為已經沒有 id 1 的資料可以被刪除!
通常我們自己在使用網站時,如果你今天是處理產品上下架的人員,當你將產品下架並刪除的時候,如果突然出現一堆亂碼,你當下肯定會不曉得發生了什麼事!
這種類型的錯誤異常,我覺得它對我來說不是「真正的出錯」,而只是我們做的這個「工作流程」還不完整,就是還沒有收尾的概念!
站在使用者體驗的角度,我們需要將這個錯誤異常做一個處理。
例如:顯示一個「此產品已刪除」,或是「找不到此產品!」的訊息。
讓使用者明白是發生什麼事情,而這種處理是重要的。
那麼今天就來針對「刪除產品」這個工作流程所產生的錯誤異常做處理。
public function destroy($id)
{
$product = Product::find($id);
// 如果找不到就顯示 404 狀態碼及其錯誤訊息
if (!$product) {
return response()->json(['error' => '找不到此商品!'], Response::HTTP_NOT_FOUND);
}
// 捕捉可能的例外
try {
// 刪除商品
$product->delete();
// 如果刪除失敗就顯示 500 狀態碼及錯誤訊息
} catch (Exception $e) {
return response()->json(['error' => '刪除此商品失敗!'], Response::HTTP_INTERNAL_SERVER_ERROR);
}
// 如果成功刪除就回傳空白內容並給 204 狀態碼
return response(null, Response::HTTP_NO_CONTENT);
}
我們在使用應用程式時,總是會有很多意外可能會發生,預想得到或預想不到的,造成程式無法繼續正常進行。
所以在錯誤異常處理這一個部份,通常搭配使用 try...catch
捕捉可能的例外,讓我們知道這個錯誤是什麼方向。
那這個顯示 500 狀態碼的錯誤,我通常就會認為是「真正的出錯」,進而尋找出錯原因,並解決它。
這裡是執行實際的刪除操作。如果刪除成功,程式會繼續往下執行。
如果在刪除的過程中發生了任何錯誤(例如資料庫連線問題、刪除權限不足等),就會跳到這個區塊。
這時候會回傳一個 JSON 格式的錯誤訊息,並給 500 的狀態碼,表示「伺服器錯誤」,讓我們知道刪除失敗。
使用 try...catch
將你預想得到或預想不到的錯誤捕捉!
感覺好像神奇寶貝球,現在大家都已經習慣寶可夢了嗎?我還是比較喜歡神奇寶貝(笑)
有顯示設定好的訊息,所以測試成功囉!