This post is also available in:
English
Hallo apa kabar teman semuanya, semoga kalian semua sehat dan sukses. Kali ini kita akan mambahas tutorial cara mengetahui error yang terjadi pada laravel.
Laravel memberi Anda begitu banyak fleksibilitas dalam hal penanganan kesalahan. Saya yakin Anda akan mempelajari sesuatu yang baru di tutorial ini. Anda dapat mengganti salah satu templat kode status laravel.
Dan kalian dapat mempelajari tutorial yang lainnya:
Membuat Rating dan Ulasan Dengan Laravel
Drag and Drop Image/File Upload Menggunakan Laravel
REST API Login & Register Dengan Sanctum Laravel
Salah satu fitur yang utama pada laravel untuk menangani error yaitu exception handling. Laravel dilengkapi dengan built-in exception handler yang memungkinkan Anda untuk melaporkan dan membuat pengecualian dengan mudah dan ramah.
Dalam pengaturan default yang di sediakan oleh exception handler yaitu melalui handler class untuk memahami bagaimana laravel menangani exceptions. dan kita akan melihat bagaimana kita dapat membuat exception handler untuk dapat membuat costum exceptions.
Kode dan Status Respons HTTP
Code | Status | Description |
---|---|---|
200 | Ok | The request was successfully completed. |
201 | Created | A new reesource was successfully created. |
400 | Bad Request | The request was invalid. |
401 | Unauthorized | Invalid login credentials. |
403 | Forbidden | You do not have enough permissions to perform this action. |
404 | Not Found | The requested resource/page not found. |
405 | Method Not Allowed | This request is not supported by the resource. |
409 | Conflict | The request could not be completed due to a conflict. |
500 | Internal Server Error | The request was not completed due to an internal error on the server side. |
503 | Service Unavailable | The server was unavailable. |
Anda harus mengikuti struktur file seperti yang disebutkan di atas jika tidak, Anda tidak akan dapat mengganti halaman kesalahan di atas. Untuk mendapatkan pesan kesalahan dalam file tampilan, Anda dapat menggunakan variabel berikut dalam tampilan blade Anda:
404.blade.php
{{ $exception->getMessage() }}
Install Laravel
pertama yang harus anda memluai aplikasi yaitu, kita harus insall laravel terlebih dahulu.
composer create-project laravel/laravel handling-laravel

Pengaturan Config
Setelah kita melakukan instalasi laravel, kali ini kita dapat mengatur file config kita di config/app.php.
jika sudah diatur ke TRUE
, ini akan membantu Anda untuk men-debug kesalahan yang dihasilkan oleh aplikasi. Nilai default dari variabel ini diatur ke nilai variabel APP_DEBUG
environment dalam .env
file.
Dalam development environment, Anda harus mengatur ke TRUE
sehingga Anda dapat dengan mudah melacak kesalahan dan memperbaikinya. Di sisi lain, Anda harus mematikannya saat production environment, dan akan menampilkan halaman kesalahan umum dalam hal ini.

File log standar terletak di storage/logs/laravel.log
, dan cukup dalam kebanyakan kasus. Di sisi lain, APP_LOG_LEVEL
diatur ke nilai yang menunjukkan tingkat keparahan kesalahan yang akan didata.
Pengaturan Hendler
Selanjutnya, kita akan melihat default Handler class yang datang dengan default aplikasi Laravel. Lanjutkan dan buka app/Exceptions/Handler.php
file.
Dan kalian ingin membuat respons atau tampilan khusus untuk kesalahan khusus Anda, Anda dapat melakukannya di laravel. Yang perlu Anda lakukan adalah memodifikasi kelas App\Exceptions\Handler.
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->reportable(function (Throwable $e) {
return false;
});
}
/**
* @param Request $request
* @param Throwable $e
* @return JsonResponse|Response|\Symfony\Component\HttpFoundation\Response
* @throws Throwable
*/
public function render($request, Throwable $e)
{
if ($request->is('api/*')) {
return response()->json([
'message' => 'Record not found.'
], 404);
}
return parent::render($request, $e);
}
}
Kalian dapat menambahkan beberapa logika khusus lainnya di sini untuk memenuhi persyaratan pengecualian Anda.
Penanganan kesalahan menggunakan metode register
Kalian juga dapat merender halaman kesalahan yang berbeda menggunakan metode register laravel di dalam kelas App\Exceptions\Handler Anda. Mari kita ambil contoh mari kita buat kelas pengecualian baru yang akan dipanggil ketika pesanan gagal di aplikasi kita.
Untuk menghasilkan kelas pengecualian baru, ikuti perintah di bawah ini:
php artisan make:exception InvalidOrderException
Perintah di atas akan membuat file di bawah folder app/Exceptions dengan nama InvalidOrderException.php. Mari kita buka file baru ini dan modifikasi seperti yang ditunjukkan di bawah ini:
<?php
namespace App\Exceptions;
use Exception;
class InvalidOrderException extends Exception
{
/**
* Get the exception's context information.
*
* @return array
*/
public function context(): array
{
return ['order_id' => 123];
}
}
Mari kita ubah kelas App\Exceptions\Handler kita seperti yang ditunjukkan di bawah ini:
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->renderable(function (InvalidOrderException $e, $request) {
return response()->view('errors.invalid-order', [], 500);
});
}
}
Sekarang, buat file bernama invalid-order.php di bawah folder app/resources/views/errors dan ubah konten file sesuai kebutuhan.
Demikian tutorial kali ini saya baut. Semoga bermanfaat.
Terimakasih.