# laravel 錯誤處理 https://hackmd.io/@javck/ByJgF8HRP/%2FVVqDeWMRSpOIofKG4fk67Q 影片介紹 https://www.youtube.com/watch?v=OCi9ujU6Xrw&ab_channel=Acadea.io 大概講述 ## try catch **find不會錯誤喔 因為他找不到不會錯誤 就沒了 要findOrFail** https://laraveldaily.com/how-to-catch-handle-create-laravel-exceptions/ https://stackoverflow.com/questions/33444029/error-handling-with-try-and-catch-in-laravel 您在 a 中,namespace因此您應該使用它\Exception來指定全局命名空間: ``` try { $this->buildXMLHeader(); } catch (\Exception $e) { return $e->getMessage(); } ``` 在你的代碼已經使用了catch (Exception $e)這麼Exception被搜查/為: `App\Services\PayUService\Exception` 由於里面沒有Exception類,App\Services\PayUService所以它不會被觸發。或者,您可以use在類的頂部使用一條語句,例如use Exception;,然後您可以使用catch (Exception $e) //try catch必看 https://www.youtube.com/watch?v=RTTXZVIL6tw&t=345s 錯誤可以用基本的Exception 但這樣不能表示錯誤是甚麼 所以最好自己建立  **捕捉錯誤一般用exception 但如果是php的藥用error接收** https://www.youtube.com/watch?v=NyPsSNrfYCo ## reporter 幫助函式 有時你可能需要報告異常,但不終止當前請求的處理。 report() 幫助函數允許你在不渲染錯誤頁面給用戶的情況下快速報告異常: ``` public function isValid($value) { try { // Validate the value... } catch (Throwable $e) { report($e); return false; } } ``` ## 自定義 HTTP 錯誤頁面 Laravel 創建了可以輕鬆顯示各種 HTTP 狀態碼的自定義錯誤頁面。例如如果您想要自定義 HTTP 狀態碼為 404 的錯誤頁面,您只需創建 resources/views/errors/404.blade.php 檔案。該檔案用於應用產生的所有 404 錯誤。errors資料夾中的視圖名稱應為它們所對應的 HTTP 狀態碼。由 abort() 引發的 HttpException 實例將作為 $exception 變數傳遞給視圖: `<h2>{{ $exception->getMessage() }}</h2>` 你可以使用 vendor:publish 這一個 Artisan 命令來發布 Laravel 錯誤頁面模板到專案中。一旦你發布了模板,你就可以根據需要來自定義它們 `php artisan vendor:publish --tag=laravel-errors` ## 自訂錯誤 歐洲laravel https://www.youtube.com/watch?v=QSUGFJYMPvI 在Handler的render方法會判斷錯誤哪來的  但這樣太累所以自訂義class 這樣外面就不用寫render方法 只要寫class裡面的 原理在這自己看原始碼  但注意這邊 else 如果實現這interface只要這樣寫  這是一樣的 這邊有很多實現interface 你看向錯誤會重導向就是這個    ## 使用 像你要發布這個post但他不存在怎辦 要丟錯 丟沒驗證的你就可以這樣  這withMessage的key要對到 @error()裡面喔  ###### tags: `Laravel`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up