This post is also available in:
English
Hallo apa kabar teman semuanya, semoga sehat dan sukses selalu. Kali ini kita masih membahas Error hanling, tapi kali ini kita membahas Error hendling pada Codeigniter 4.
Ketika kita membuat aplikasi sering kali kita menemukan beberapa masalah seperti error yang sering terjadi. Itu sangat mengganggu bagi pengguna aplikasi. Codeigniter juga mempunyai cara untuk menangani permasalahan ketika terjadi error.
Error Handling sangat bermanaaf ketika kalian mengembangkan sautu aplikasi. Ini akan mempermudah cara menangani sautu error.
Ikutilah langkah-langkah di bawah ini:
- Konfigurasi Error Handling
- Menggunakan Exceptions
- Menggunakan PageNotFoundException
Baca juga tutorial yang lainnya:
Membuat Sitemap Otomatis Codeigniter 4
Codeigniter 4 ~ Membuat Notifikasi Menggunakan SweetAlert
Konfigurasi Error Handling
Secara default, CodeIgniter akan menampilkan semua kesalahan di lingkungan pengembangan dan pengujian, dan tidak akan menampilkan kesalahan apa pun di lingkungan produksi. Anda dapat mengubahnya dengan mengatur variabel CI_ENVIRONMENT di file .env.

Lingkungan yang berbeda akan memerlukan tingkat pelaporan kesalahan yang berbeda. Secara default, mode pengembangan akan menampilkan kesalahan dan pengujian dan mode langsung akan menyembunyikannya. CodeIgniter menyediakan tiga fungsi seperti yang ditunjukkan di bawah ini untuk menangani kesalahan.
show_error()
Fungsi ini biasanya di gunakan pda format HTML.
- $message (mixed) − Error message
- $status_code (int) − HTTP Response status code
- $heading (string) − Error page heading
show_404()
Fungsi ini digunakan ketika mengakses halaman tidak ada.
- $page (string) – URI string
- $log_error (bool) – Whether to log the error
log_message()
Fungsi ini berguna untuk mengirimpan pesan berupa pesan log.
- $level (string) − Log level: ‘error’, ‘debug’ or ‘info’
- $message (string) − Message to log
- $php_error (bool) − Whether we’re logging a native PHP error message
Logging dapat di aktifkan di file app/Config/Exceptions.php.
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
/**
* Setup how the exception handler works.
*/
class Exceptions extends BaseConfig
{
/**
* --------------------------------------------------------------------------
* LOG EXCEPTIONS?
* --------------------------------------------------------------------------
* If true, then exceptions will be logged
* through Services::Log.
*
* Default: true
*
* @var bool
*/
public $log = true;
/**
* --------------------------------------------------------------------------
* DO NOT LOG STATUS CODES
* --------------------------------------------------------------------------
* Any status codes here will NOT be logged if logging is turned on.
* By default, only 404 (Page Not Found) exceptions are ignored.
*
* @var array
*/
public $ignoreCodes = [404];
/**
* --------------------------------------------------------------------------
* Error Views Path
* --------------------------------------------------------------------------
* This is the path to the directory that contains the 'cli' and 'html'
* directories that hold the views used to generate errors.
*
* Default: APPPATH.'Views/errors'
*
* @var string
*/
public $errorViewPath = APPPATH . 'Views/errors';
/**
* --------------------------------------------------------------------------
* HIDE FROM DEBUG TRACE
* --------------------------------------------------------------------------
* Any data that you would like to hide from the debug trace.
* In order to specify 2 levels, use "/" to separate.
* ex. ['server', 'setup/password', 'secret_token']
*
* @var array
*/
public $sensitiveDataInTrace = [];
}
Anda dapat menemukan pesan log di application/log/. Pastikan bahwa direktori ini dapat ditulis sebelum Anda mengaktifkan file log.
Berbagai template untuk pesan kesalahan dapat ditemukan di application/views/errors/cli atau application/views/errors/html.
Menggunakan Exceptions
Exceptions digunakan untuk memberikan pilihan kepada pegembang aplikasi ketika code yang di buat terjadi error.
<?php
throw new \Exception('Some message goes here');
Kalian dapat menggunakan try/catch pada exception:
<?php
try {
$user = $userModel->find($id);
} catch (\Exception $e) {
exit($e->getMessage());
}
Di sini saya berikan contohnya kepada kalian:
<?php namespace App\Controllers;
use App\Models\PostModel;
use App\Models\PostCategoryModel;
class Post extends BaseController
{
public function create()
{
$post = new PostModel();
$post->db->transBegin();
try {
$post->insert([
'title'=>$this->request->getPost('title'),
'content'=>$this->request->getPost('content')
]);
$post_id = $post->insertID();
$postLog = $this->TransLog($this->request->getPost());
if($postLog===false){
throw new Exception();
}
$postCategory = new PostCategoryModel();
$postCategory->insert([
'post_id'=>$post_id,
'category_id'=>$this->request->getPost('category_id')
]);
$post->db->transCommit();
} catch (\Exception $e) {
$post->db->transRollback();
}
}
}
Kode diatas menggunakan try catch agar ketika $postLog mengembalikan nilai false.Pergi ke catch dan melakukan rollback.
Menggunakan PageNotFoundException
Ini digunakan untuk kesalahan 404, Halaman Tidak Ditemukan. Saat dilempar, sistem akan menampilkan tampilan yang ditemukan di app/Views/errors/html/error_404.php. Anda harus menyesuaikan semua tampilan kesalahan untuk situs Anda. Jika, di app/Config/Routes.php, Anda telah menetapkan 404 Override, yang akan dipanggil sebagai ganti halaman 404 standar:
<?php
if (! $page = $pageModel->find($id)) {
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
}
Anda dapat meneruskan pesan ke pengecualian yang akan ditampilkan sebagai pengganti pesan default pada halaman 404.
Itulah Error Handling Codeigniter 4 yang sering digunakan oleh para pengembang aplikasi menggunakan Codeigniter 4.
Demikian tutorial kali ini yang bisa saya berikan, semoga bermanfaat.
Terimakasih.
source : https://www.codeigniter.com/user_guide/general/errors.html