Exception Handling dalam C++
Exception handling atau penanganan pengecualian dalam C++ adalah mekanisme yang digunakan untuk menangani kesalahan atau kondisi tidak normal yang terjadi selama eksekusi program. Dalam C++, kita menggunakan blok try
, catch
, dan throw
untuk menangani pengecualian. Pada artikel ini, kita akan membahas bagaimana cara menggunakan exception handling dengan baik, baik untuk pengecualian standar maupun kustom.
1. Struktur Dasar Exception Handling
Exception handling menggunakan tiga komponen utama:
- try: Blok yang mencakup kode yang mungkin menyebabkan pengecualian.
- catch: Blok yang menangani pengecualian jika terjadi.
- throw: Instruksi untuk melempar pengecualian.
Berikut adalah contoh sederhana penggunaan try
, catch
, dan throw
:
#include <iostream>
int main() {
int pembilang = 10, penyebut = 0;
try {
if (penyebut == 0) {
throw "Error: Penyebut tidak boleh nol!";
}
std::cout << "Hasil: " << (pembilang / penyebut) << std::endl;
} catch (const char* e) {
std::cerr << e << std::endl;
}
return 0;
}
Dalam contoh ini, jika penyebut adalah nol, program akan melempar pengecualian menggunakan throw
, dan pengecualian tersebut akan ditangkap oleh catch
yang menampilkan pesan error.
2. Exception Standar dalam C++
C++ memiliki beberapa pengecualian standar yang dapat kita gunakan. Contoh-contohnya meliputi:
std::out_of_range
: Digunakan untuk menangani kesalahan akses di luar batas pada array atau vektor.std::invalid_argument
: Digunakan untuk menangani argumen yang tidak valid.std::runtime_error
: Digunakan untuk kondisi runtime yang tidak terduga.
Contoh penanganan pengecualian standar menggunakan std::out_of_range
:
#include <iostream>
#include <vector>
#include <stdexcept>
int main() {
std::vector<int> angka = {1, 2, 3};
try {
std::cout << angka.at(10) << std::endl; // Akses di luar batas
} catch (const std::out_of_range& e) {
std::cerr << "Pengecualian: " << e.what() << std::endl;
}
return 0;
}
Pengecualian std::out_of_range
akan ditangkap saat mencoba mengakses elemen vektor di luar batas, dan pesan kesalahan akan ditampilkan.
3. Pengecualian Kustom
Kita juga dapat membuat pengecualian kustom di C++ dengan mendefinisikan kelas sendiri. Contoh berikut menunjukkan cara membuat pengecualian kustom:
#include <iostream>
#include <stdexcept>
class PembagianOlehNol : public std::runtime_error {
public:
PembagianOlehNol() : std::runtime_error("Error: Pembagian oleh nol tidak diperbolehkan") {}
};
int main() {
int pembilang = 10, penyebut = 0;
try {
if (penyebut == 0) {
throw PembagianOlehNol();
}
std::cout << "Hasil: " << (pembilang / penyebut) << std::endl;
} catch (const PembagianOlehNol& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
Pengecualian kustom PembagianOlehNol
digunakan untuk menangani kesalahan pembagian oleh nol, memberikan pesan yang lebih spesifik.
Kesimpulan
Exception handling dalam C++ memberikan mekanisme yang kuat untuk menangani kesalahan selama runtime. Dengan menggunakan blok try
, catch
, dan throw
, kita dapat menangani berbagai jenis kesalahan, baik standar maupun kustom, sehingga program kita menjadi lebih robust dan mudah di-maintain.
Komentar
Posting Komentar