Skip to main content

Bahasa Pemrograman dengan Exception Handling

Perbedaan suatu bahasa pemrograman yang memiliki exception handling vs yang tidak memiliki exception handling
Dalam bahasa pemrograman yang 'tidak memiliki' exception handling:
  • Ketika exception terjadi, kontrol masuk ke sistem operasi, dimana pesan/message ditampilkan dan kemudian program dihentikan. 
Dalam bahasa pemrograman yang 'memiliki' exception handling
  • Program diizinkan untuk menangkap exception (boleh lebih dari satu), sehingga memberikan kemungkinan untuk memperbaiki masalah dan melanjutkan eksekusi.


Keuntungan Exception Handling yang Built-in dalam bahasa pemrograman
  • Tanpa exception handling, kode yang diperlukan untuk mendeteksi kesalahan bisa sangat berserakan.
  • Dengan adanya exception handling dalam bahasa pemrograman akan memungkinkan compiler untuk memasukkan machine code untuk memeriksa sebelum mengakses setiap elemen array, dimana ini akan sangat memperpendek dan menyederhanakan kode.
  • Keuntungan lain dari dukungan bahasa pemrrograman untuk exception handling adalah propagasi exception. Propagasi exception memungkinkan exception yang muncul di satu unit program yang akan ditangani di beberapa unit lain dalam turunannya yang dinamis atau statis. Ini memungkinkan satu exception handler untuk digunakan untuk sejumlah unit program yang berbeda. Penggunaan kembali ini dapat menghasilkan penghematan yang signifikan dalam biaya pengembangan, ukuran program, dan kompleksitas program.
  • Bahasa yang mendukung exception handling mendorong penggunanya untuk mempertimbangkan semua events yang dapat terjadi selama eksekusi program dan bagaimana events tersebut dapat ditangani. Pendekatan ini jauh lebih baik daripada tidak mempertimbangkan kemungkinan semacam itu dan hanya berharap tidak ada yang salah.

Contoh exceptionhandling di Java
public class KhususUjiKode {
        static int x = 10;
        static int z = 10;
        static int[] arrayX = {5, 7, 3, 2};
        
    public static void main(String[] args) {
       
        try {
            z = x / 0;
        } catch (Exception e) {
            System.out.println("Karena ada pembagian dengan nol maka nila z "
                    + "dikembalikan ke default yaitu z = 10, dan hasilnya adalah: " 
                    + pembagian(10));
        }
        
        try {            
            int xx = 9;
            xx = arrayX[4];
        } catch (ArrayIndexOutOfBoundsException aiob) {
            System.out.println("Karena index array tidak cocok maka nilai xx "
                    + "diisi dengan index ke-3 yaitu: " + index3());
        }
    }
    private static int pembagian(int z) {
            return x / z ;
        }
    
    private static int index3() {
            return arrayX[3] ;
        }
}

Beberapa isu dalam desain  exception handling dapat diringkas sebagai berikut:
  • Bagaimana dan dimana exception handler dinyatakan, dan bagaimana scope nya ?
  • Bagaimana suatu exception dapat dikaitkan (bound) pada suatu handler.
  • Apakah informasi tentang exception dapat dikirimkan ke handler ?
  • Kemana kendali eksekusi dialihkan setelah handler selasai?
  • Apakah suatu bentuk finalization disediakan?
  • Bagaimana user-defined exception dinyatakan?
  • Jika pre-defined exception disediakan, apakah ada default handler untuk program yang tidak melengkapinya?
  • Apakah pre-defined exception dapat dibangkitkan (raised) secara implicit?
  • Apakah suatu hardware-detectable error diperlakukan sebagai exception yang dapat di-handle?
  • Apakah menyediakan pre-defined exception?
  • Apakah pre-defined exception dapat di-disable?

Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan d...

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)