#31-Laravel Error Handling

Laravel sudah menyediakan fitur atau konfigurasi yang bisa kita lakukan untuk menangani segala jenis error. dan penanganan error pada laravel ini akan kita bahas pengertian dan cara-caranya pada tutorial ini.

Pada saat kita sedang mengerjakan sebuah project aplikasi pada masa development, jika ada kesalahan code atau error yang terjadi, tentu kita ingin error yang terjadi tersebut terlihat, sehingga dengan melihat pesan error tersebut kita bisa mengetahui pada bagian mana saja yang terdapat error dan kita bisa dengan mudah menemukan bug tersebut dan memperbaikinya.

Tapi, pada saat proyek aplikasi kita sudah di deploy dan sudah online, alangkah lebih baiknya error tersebut tidak terlihat pada bagian front-end. karena pasti kita tidak ingin ada error yang terlihat ke pengguna pada saat pengguna menggunakan aplikasi yang kita buat.

Setting Error dan Logging Laravel

Laravel sudah menyediakan konfigurasi ini. konfigurasi untuk menyembunyikan dan menampilkan error. konfigurasi error pada laravel ada pada file .env.

Cari bagian APP_DEBUG, dan atur dengan true atau false. Secara default pengaturannya adalah true, sehingga error yang terjadi bisa terlihat.

APP_DEBUG=true

Saat project sudah di publish baiknya adalah mengubah setting APP_DEBUG=false supaya pengguna tidak dapat melihat error.

Nah bukan berarti kita sebagai developer tidak dapat melihat error tersebut. Kita dapat melihat error log melalui file storage/logs.

Folder tersebut berisi error log yang dipisah berdasarkan tanggal, sehingga mudah untuk kita analisa.

Simulasi

Sekarang kita akan membuat simulasi penerapannya diawali dengan mengubah setting APP_DEBUG=false pada file .env

Buat Routes

routes/web.php

Route::get('/testerror','TestErrorController@index');
Route::get('/testerror/errorno/{no}','TestErrorController@errorno');

Buat Controller

php artisan make:controller TestErrorController

app/Http/Controllers/TestErrorController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestErrorController extends Controller
{
    public function index()
    {
        return $helloworld;
    }
    public function errorno($no){
        if($no==403){
            return abort(403,'Anda tidak punya akses');
        }else{
            return abort(500);
        }

    }
}

Perhatikan baris “return $helloworld;” . Seharusnya jika dibuka pada saat APP_DEBUG=true, maka tampilannya akan berisi error debug

Namun karena APP_DEBUG=false, maka tampilannya akan seperti simulasi di bawah ini :

Jalankan service php artisan serve, lalu buka web browser http://localhost:8000/testerror

Penting!!! Jika masih tampil error debug, lakukan perintah artisan sbb:

php artisan config:cache

Untuk melihat error nya pada log, silahkan teman-teman buka folder storage/logs. lihat file log dengan format tanggal hari ini.

Mengubah Tampilan View

php artisan vendor:publish --tag=laravel-errors

Akan ada folder errors pada direktori resources/views

Mengani Handler

Yang pertama perlu dilakukan adalah mengubah isi dari file Handler.php. File ini terletak pada direktori app/Exceptions. Ubah method berikut:

public function render($request, Exception $exception)
{
    if($this->isHttpException($exception)){
        switch ($exception->getStatusCode()) {
            case 404:
                return response()->view('errors.404', [], $exception->getStatusCode());
                break;
            case 405:
                return response()->view('errors.405', [], $exception->getStatusCode());
                break;
        }
    }        
    return parent::render($request, $exception);
}

Ubahlah kode pada public function render di dalam file Handler.php sesuai dengan kode di atas. Pada kode di atas saya hanya memberikan contoh error kode 404 dan 405 saja, anda bisa menambahkan error yang lainnya sesuai dengan kebutuhan program anda. Dan pada bagian return nya saya memberikan 2 contoh return yaitu return redirect yang akan melempar error ke route 404 (untuk cara ini kita perlu mendefinisikan route 404 pada routes.php terlebih dahulu) dan yang kedua yaitu return view

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>