unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Eksepsi

Eksepsi #

Pendahuluan #

Eksepsi (Exception) dalam PHP adalah mekanisme yang digunakan untuk menangani kesalahan runtime yang terjadi selama eksekusi program. Dengan menggunakan eksepsi, Anda dapat menangkap dan menangani kesalahan dengan cara yang lebih terstruktur dan terkendali. Eksepsi memungkinkan Anda untuk memisahkan kode normal dari kode penanganan kesalahan, sehingga membuat kode lebih bersih dan mudah dipelihara.

Konsep Dasar #

  1. Throwing an Exception: Menggunakan kata kunci throw untuk melempar eksepsi.
  2. Catching an Exception: Menggunakan blok try...catch untuk menangkap eksepsi.
  3. Finally Block: Menggunakan blok finally untuk kode yang harus dieksekusi terlepas dari apakah eksepsi terjadi atau tidak.

Sintaks #

Contoh Dasar Eksepsi:

<?php
try {
    // Kode yang mungkin menimbulkan eksepsi
    if (rand(0, 1) == 1) {
        throw new Exception("Terjadi kesalahan!");
    }
    echo "Tidak ada kesalahan.<br>";
} catch (Exception $e) {
    // Menangkap eksepsi
    echo "Kesalahan: " . $e->getMessage() . "<br>";
} finally {
    // Kode yang selalu dijalankan
    echo "Blok finally dijalankan.<br>";
}
?>

Penjelasan:

  • try: Blok kode yang mungkin menimbulkan eksepsi ditempatkan di dalam blok try.
  • catch: Jika eksepsi terjadi di dalam blok try, blok catch akan menangkap dan menangani eksepsi tersebut. Parameter $e adalah objek dari kelas Exception.
  • finally: Blok finally (opsional) digunakan untuk menjalankan kode yang harus dijalankan terlepas dari apakah eksepsi terjadi atau tidak.

Kelas Eksepsi Kustom #

Anda dapat membuat kelas eksepsi kustom dengan mewarisi kelas Exception.

Contoh Kelas Eksepsi Kustom:

<?php
class MyException extends Exception {}

try {
    // Kode yang mungkin menimbulkan eksepsi
    if (rand(0, 1) == 1) {
        throw new MyException("Ini adalah eksepsi kustom!");
    }
    echo "Tidak ada kesalahan.<br>";
} catch (MyException $e) {
    // Menangkap eksepsi kustom
    echo "Kesalahan kustom: " . $e->getMessage() . "<br>";
} catch (Exception $e) {
    // Menangkap eksepsi lainnya
    echo "Kesalahan umum: " . $e->getMessage() . "<br>";
} finally {
    // Kode yang selalu dijalankan
    echo "Blok finally dijalankan.<br>";
}
?>

Penjelasan:

  • MyException: Kelas eksepsi kustom yang mewarisi kelas Exception.
  • catch (MyException $e): Blok catch ini akan menangkap eksepsi dari tipe MyException.

Menangkap Eksepsi #

Anda dapat menangkap beberapa jenis eksepsi dengan menggunakan beberapa blok catch.

Contoh Menangkap Beberapa Eksepsi:

<?php
class DatabaseException extends Exception {}
class FileNotFoundException extends Exception {}

try {
    // Kode yang mungkin menimbulkan eksepsi
    if (rand(0, 1) == 1) {
        throw new DatabaseException("Terjadi kesalahan pada database!");
    } else {
        throw new FileNotFoundException("File tidak ditemukan!");
    }
} catch (DatabaseException $e) {
    // Menangkap eksepsi database
    echo "Kesalahan Database: " . $e->getMessage() . "<br>";
} catch (FileNotFoundException $e) {
    // Menangkap eksepsi file tidak ditemukan
    echo "Kesalahan File: " . $e->getMessage() . "<br>";
} catch (Exception $e) {
    // Menangkap eksepsi lainnya
    echo "Kesalahan Umum: " . $e->getMessage() . "<br>";
} finally {
    // Kode yang selalu dijalankan
    echo "Blok finally dijalankan.<br>";
}
?>

Contoh Implementasi #

Eksepsi sering digunakan dalam fungsi untuk menangani kesalahan yang mungkin terjadi saat fungsi dijalankan.

Contoh Implementasi dalam Fungsi:

<?php
function bagi($pembilang, $penyebut) {
    if ($penyebut == 0) {
        throw new Exception("Pembagian dengan nol tidak diperbolehkan.");
    }
    return $pembilang / $penyebut;
}

try {
    echo bagi(10, 2) . "<br>"; // Output: 5
    echo bagi(10, 0) . "<br>"; // Ini akan menimbulkan eksepsi
} catch (Exception $e) {
    echo "Kesalahan: " . $e->getMessage() . "<br>";
} finally {
    echo "Operasi pembagian selesai.<br>";
}
?>

Kesimpulan #

Menangani eksepsi dalam PHP memungkinkan Anda untuk mengelola kesalahan runtime dengan cara yang lebih terstruktur dan terkendali. Dengan menggunakan blok try...catch, Anda dapat menangkap dan menangani kesalahan yang terjadi selama eksekusi program. Blok finally memastikan bahwa kode tertentu selalu dijalankan, terlepas dari apakah eksepsi terjadi atau tidak. Anda juga dapat membuat kelas eksepsi kustom untuk mengelola jenis kesalahan tertentu dalam aplikasi Anda.

« Trait
Array »