Monday 18 April 2011

Membuat Game Dengan C++

Exception : Tangkap Errornya!

Exception atau jika diterjemahkan adalah 'pengecualian' adalah salah satu cara yang menangkap (catch) atau bereaksi terhadap sesuatu yang tak terduga seperti Runtime Errors. Pada umumnya kita mengatasi error dengan kondisi 'if'. Lalu bagaimana error ini ditangani oleh exception. Bagaimana cara kerjanya? Ia akan mengubah alur pada saat eksekusi program, dengan melempar (throw) sebuah objek tertentu yang memiliki informasi untuk alur yang baru. Untuk lebih jelasnya perhatikan kode berikut:


#include <iostream>

using namespace std;

int main(){
    try{
        cout<<"Masukkan angka antara 0-100: ";
        int a; //a = angka
        cin>>a;
        if( a > 100 || a < 0) throw a;
        cout << "\nAngka yang anda masukkan " << a << " dan berjalan normal";
    }
    catch( int ga){ //ga = get angka
        cout << "\nAngka yang tak terduga!! adalah " << ga;
    }
    return 0;
}

Program diatas akan meminta user memasukkan angka, lalu dengan kondisi if (wah pake if juga ternyata.. ) diperiksa apakah nilai tidak diantara 0-100. Jika nilainya diatas 100 (contoh 200) atau dibawah 0 maka alur program akan dilempar kepada bagian yang akan menangkap , yaitu keyword catch . Tetapi kita juga harus teliti dalam penggunaannya karena jika kita salah melempar tipe data yang sesuai maka program bisa langsung ngambek (alias error). Seperti contoh berikut ini:


#include <iostream>

using namespace std;
int main(){

    //1. Disini akan berjalan lancar
    try{
        throw 20;
    }
    catch( int ga){ //ga = get angka
        cout << "\nAngka yang tak terduga!! adalah " << ga;
    }

    //2. BE CAREFULL!!
    //kode berikut ini akan membuat error program!
    try{
        throw 'a';
    }
    catch( int ga2){
        cout << "\nAngka yang tak terduga!! adalah " << ga2;
    }

    return 0;
}

Pada try kedua terlihat bahwa data yang dilempar adalah tipe char, karena yang ditangkap hanya tipe integer maka program akan error. Mungkin terbesit sebuah tanya mengapa bisa terjadi error padahal tugas utamanya adalah untuk menangkap error , sungguh ironis. Sehingga perlu ditambahkan penangkapan yang bersifat universal, seperti pada kode berikut ini:


...
    try{
        throw 'a';
    }
    catch( int ga2){
        cout << "\nAngka yang tak terduga!! adalah " << ga2;
    }
 catch(...){
  cout << "\nSungguh terlalu...";
 }
...

Sampai disini kita sudah mengetahui dasar-dasar exceptions. Terlihat sedikit ribet menggunakan Exceptions, tetapi suatu teknik atau cara bahkan disini keyword untuk C++ tidak mungkin diciptakan tanpa ada manfaatnya. Begitu juga dengan exceptions ini, mungkin kita hanya belum terlalu mengerti fungsinya lebih dalam. Yang terpenting bijaksanalah dalam menggunakannya .

0 komentar:

Post a Comment

 
Design by Andhika Yuswanto | Bloggerized by Kunir - JAWA TIMUR | UNIVERSITAS JEMBER