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...

Proses dalam Data Mining - Seri Data Mining for Business Intelligence (5)

Proses dalam Data Mining Untuk melaksanakan project-project dalam Data Mining (DM) secara sistematis, suatu proses yang umum berlaku biasanya diterapkan. Berdasarkan ‘best practice’, para praktisi dan peneliti DM mengusulkan beberapa proses (workflow atau pendekatan step-by-step yang sederhana) untuk memperbesar peluang keberhasilan dalam melaksanakan project-project DM. Usaha-usaha itu akhirnya menghasilkan beberapa proses yang dijadikan sebagai standard, beberapa diantaranya (yang paling popular) dibahas dalam bagian ini. [ Baca juga: Metode-metode dalam Data Mining ]