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?

No comments:

Post a Comment