0Pricing
PHP Academy · Pelajaran

Jenis dan Pelaporan Error PHP

Pahami notifikasi, peringatan, dan error fatal, serta tingkat error_reporting.

Jenis dan Pelaporan Error PHP adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Tipe Kesalahan PHP

PHP memiliki beberapa tingkat keparahan kesalahan:

  • Pemberitahuan — masalah kecil, eksekusi berlanjut
  • Peringatan — masalah yang tidak fatal, eksekusi berlanjut
  • Kesalahan Fatal — eksekusi segera berhenti
  • Kesalahan Penguraian — kesalahan sintaks, berhenti sebelum eksekusi
  • Usang — fitur akan dihapus

error_reporting()

Kontrol kesalahan mana yang dilaporkan PHP dengan error_reporting():

<?php
// Show all errors (development)
error_reporting(E_ALL);

// Hide notices and deprecated
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

// Production: no display, log to file
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

display_errors dibandingkan dengan log_errors

Pengaturan php.ini utama untuk penanganan kesalahan:

  • display_errors = On — tampilkan kesalahan di peramban (hanya untuk pengembangan)
  • display_errors = Off — sembunyikan dari pengguna (produksi)
  • log_errors = On — tulis ke berkas error_log
  • error_log = /path/to/file — tentukan lokasi log

Jangan pernah menampilkan kesalahan kepada pengguna dalam lingkungan produksi!

Menimbulkan Kesalahan dengan trigger_error

Buat kesalahan PHP Anda sendiri dengan trigger_error():

<?php
function divide(int $a, int $b): float {
    if ($b === 0) {
        trigger_error('Division by zero', E_USER_WARNING);
        return 0.0;
    }
    return $a / $b;
}

echo divide(10, 0);  // triggers E_USER_WARNING

Penangan Kesalahan Kustom

Daftarkan penangan kesalahan Anda sendiri dengan set_error_handler():

<?php
set_error_handler(function(int $errno, string $errstr, string $file, int $line): bool {
    $message = "[$errno] $errstr in $file:$line";
    error_log($message);
    if ($errno === E_USER_ERROR) {
        http_response_code(500);
        die('Internal error — please try again later');
    }
    return true;  // don't execute PHP internal error handler
});

trigger_error('Custom error message', E_USER_ERROR);

Sumber Umum Kesalahan

Penyebab umum kesalahan PHP:

  • Mengakses kunci array yang tidak terdefinisi → Pemberitahuan
  • Memanggil fungsi yang mengembalikan false, lalu menggunakan hasilnya → Peringatan
  • Memanggil fungsi yang tidak terdefinisi → Kesalahan Fatal
  • Titik koma yang hilang → Kesalahan Penguraian
  • Pembagian dengan nol → Peringatan (mengembalikan INF atau NAN)

Operator Penekanan Kesalahan @

Operator @ menekan kesalahan dari satu ekspresi — hindari penggunaannya dan gunakan penanganan kesalahan yang tepat:

<?php
// Bad: hides errors silently
$result = @file_get_contents('missing.txt');

// Good: check explicitly
$result = file_get_contents('missing.txt');
if ($result === false) {
    // handle the error
    echo 'File not found';
}

JIT PHP 8 dan Perubahan Kesalahan

PHP 8 membuat beberapa penanganan kesalahan menjadi lebih ketat:

  • Banyak peringatan ditingkatkan menjadi TypeError/ValueError
  • str_contains/starts_with/ends_with menggantikan regex untuk pemeriksaan sederhana
  • Memberikan tipe argumen yang salah secara bawaan akan menimbulkan TypeError

ini_set Saat Berjalan

Timpa pengaturan php.ini saat program berjalan:

<?php
// Display errors during development
if (getenv('APP_ENV') === 'development') {
    ini_set('display_errors', '1');
    ini_set('display_startup_errors', '1');
    error_reporting(E_ALL);
} else {
    ini_set('display_errors', '0');
    ini_set('log_errors', '1');
    error_reporting(E_ALL);
}

Memeriksa Tingkat Kesalahan

Deteksi tingkat kesalahan dengan AND bitwise:

<?php
$level = error_reporting();

if ($level & E_NOTICE) {
    echo 'Notices are reported';
}
if ($level & E_WARNING) {
    echo 'Warnings are reported';
}

// Check specific error types
echo (E_ALL & E_NOTICE) ? 'E_ALL includes E_NOTICE' : 'no';

Praktik Terbaik Pencatatan Log

Kebiasaan pencatatan kesalahan yang baik:

  • Selalu catat kesalahan dalam lingkungan produksi
  • Sertakan konteks: ID pengguna, URL permintaan, stempel waktu
  • Gunakan pencatatan terstruktur (JSON) agar lebih mudah diuraikan
  • Putar berkas log agar disk tidak penuh
  • Pantau log dengan alat seperti ELK, Datadog, atau Papertrail

Pemeriksaan Singkat

Jenis kesalahan PHP apa yang langsung menghentikan eksekusi?

Ringkasan: Pelaporan Kesalahan PHP

Hal-hal penting dalam penanganan kesalahan:

  • Jenis kesalahan: Pemberitahuan, Peringatan, Fatal, Penguraian, Usang
  • Tetapkan tingkatnya dengan error_reporting()
  • Matikan tampilan + nyalakan pencatatan dalam lingkungan produksi
  • Daftarkan penangan kustom dengan set_error_handler()
  • Jangan pernah menekan kesalahan dengan @ dalam kode produksi

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Jenis dan Pelaporan Error PHP” gratis?

Ya — teks lengkap “Jenis dan Pelaporan Error PHP” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Jenis dan Pelaporan Error PHP”?

Pahami notifikasi, peringatan, dan error fatal, serta tingkat error_reporting. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Jenis dan Pelaporan Error PHP” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Jenis dan Pelaporan Error PHP
  2. Try, Catch, dan Finally
  3. Membuat Pengecualian Kustom
  4. Logging Error dan Praktik Terbaik
← Kembali ke PHP Academy