C++ memberi kita mekanisme penanganan pengecualian yang terstruktur dan lebih elegan. Mekanisme terstruktur ini dapat memisahkan bagian-bagian program yang biasanya dieksekusi dan penanganan pengecualian, membuat program lebih jelas dan lebih mudah dibaca.
Selanjutnya mari kita lihat struktur penanganan pengecualian yang terbagi menjadi dua bagian:
coba{//Pernyataan eksekusi program normal throw(Ekspresi jenis pengecualian);}catch(Pengecualian tipe 1){//Kode penanganan pengecualian}catch(Pengecualian tipe 2){//Kode penanganan pengecualian}catch(Pengecualian tipe 3){ / /Kode penanganan pengecualian}//Kode berikut
Di atas adalah bentuk kode penanganan eksepsi pada C++ dengan menggunakan tiga kata kunci try , throw , dan catch .
Ketika kode dijalankan, pertama-tama ia bertemu dengan blok kode coba. Fungsinya untuk memulai mekanisme penanganan pengecualian, mendeteksi pengecualian yang ditemui selama eksekusi kode coba, dan kemudian membuangnya melalui lemparan ekspresi konstan atau variabel. Selanjutnya, akan dicocokkan (ditangkap) dengan blok pernyataan catch berikut, dan kemudian kode terkait akan dieksekusi. Jika tidak ditemukan jenis yang cocok, lanjutkan eksekusi. Jika tidak ada kecocokan yang ditemukan, fungsi terminal() akan dipanggil secara otomatis. Fungsi defaultnya adalah abort() untuk menghentikan program.
Berikut ini adalah penanganan pengecualian ketika pembagi adalah 0 selama operasi pembagian:
#include<iostream>usingnamespacestd;intmain(){inta,b;cin>>a>>b;coba{if(b==0)throwerror!b<0;}catch(constchar*str){cout<<str <<endl;}menangkap(int){cout<<throwint<<endl;}return0;}
Dapat dilihat bahwa dalam percobaan, jika b ditemukan 0, sebuah string akan dilempar, dan kemudian tangkapan yang cocok akan dimasukkan. Jelas, tangkapan pertama akan dicocokkan, dan nilai str akan ditampilkan memahami!