Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Apa Itu Penanganan Pengecualian dalam C++?

Penanganan pengecualian memungkinkan program C++ pulih dengan mulus dari kesalahan runtime yang tidak terduga. Ketika kesalahan terjadi, kontrol melompat ke penangan khusus yang dapat memutuskan cara meresponsnya.

Dengan menutup kode yang potensial bermasalah di dalam blok try dan diikuti dengan satu atau lebih klausa catch, Anda memberi program jalur jelas untuk mengelola kondisi eksepsional.

Jika tidak ada pengecualian yang dilemparkan, blok try berjalan secara normal dan penangan dilewati.

Dalam tutorial ini Anda akan mempelajari:

Menggunakan Penanganan Pengecualian?

Penanganan pengecualian menawarkan beberapa manfaat konkret:

Kata Kunci Penanganan Pengecualian Utama

Tiga kata kunci membentuk tulang punggung penanganan pengecualian C++:

Kode di dalam blok try disebut kode terlindungi; jika dilemparkan, blok catch yang sesuai akan dieksekusi.

Sintaks

 try { // protected code } catch (Exception_Name exception1) { // handle exception1 } catch (Exception_Name exception2) { // handle exception2 } // ... more catch blocks 

Contoh 1: Mengakses Elemen Vektor Luar Jangkauan

#include<iostream> #include<vector> using namespace std; int main() { vector<int> vec; vec.push_back(0); vec.push_back(1); try { vec.at(2); // out of range } catch (exception& ex) { cout << "Exception occurred!" << endl; } return 0; } 

Output:

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Berikut adalah screenshot kode:

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Rincian Kode:

  1. Sertakan iostream dan vector untuk dukungan I/O dan kontainer.
  2. Gunakan namespace std untuk menghindari nama yang sepenuhnya kualifikasi.
  3. Buat instance vector<int> dan isinya.
  4. Coba mengakses elemen di luar batas vektor di dalam blok try.
  5. Tangkap std::exception standar dan keluarkan pesan.
  6. Kembalikan dari main.

Contoh 2: Menangani Pembagian dengan Nol

#include <iostream> using namespace std; double zeroDivision(int x, int y) { if (y == 0) { throw "Division by Zero!"; } return static_cast(x) / y; } int main() { int a = 11; int b = 0; double c = 0; try { c = zeroDivision(a, b); cout << c << endl; } catch (const char* message) { cerr << message << endl; } return 0; } 

Output:

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Berikut adalah screenshot kode:

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Rincian Kode:

  1. Definisikan zeroDivision yang melemparkan C-string saat membagi dengan nol.
  2. Panggil fungsi di dalam blok try dan cetak hasilnya.
  3. Tangkap pengecualian string dan keluarkan pesan kesalahan.

Pengecualian Standar C++

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Standard Library mendeklarasikan hierarki kaya pengecualian dalam <exception>. Berikut adalah yang paling sering digunakan:

ExceptionDeskripsi std::exceptionKelas dasar untuk semua pengecualian standar. std::bad_allocDilemparkan oleh new pada kegagalan alokasi. std::bad_castDilemparkan oleh dynamic_cast saat cast gagal. std::bad_exceptionDigunakan untuk memberi sinyal pengecualian yang tidak terduga. std::bad_typeidDilemparkan oleh typeid pada glvalue tipe polimorfik yang null. std::logic_errorKesalahan yang seharusnya dapat terdeteksi oleh programmer. std::domain_errorDomain tidak valid untuk fungsi matematika. std::invalid_argumentFungsi menerima argumen yang tidak valid. std::length_errorUpaya membuat string yang terlalu besar. std::out_of_rangeDilemparkan oleh vector::at saat indeks di luar batas. std::runtime_errorKesalahan runtime yang tidak tertangkap oleh kategori lain. std::overflow_errorOverflow matematika terjadi. std::range_errorNilai di luar rentang untuk operasi. std::underflow_errorUnderflow matematika terjadi.

Pengecualian yang Ditentukan Pengguna

Kelas dasar std::exception dapat diperluas untuk membuat tipe kesalahan khusus domain. Overriding what() menyediakan pesan deskriptif.

Contoh: Pengecualian Kustom

#include <iostream> #include <exception> using namespace std; class NewException : public exception { public: const char* what() const noexcept override { return "newException occurred"; } } newex; int main() { try { throw newex; } catch (exception& ex) { cout << ex.what() << '\n'; } return 0; } 

Output:

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Berikut adalah screenshot kode:

Menguasai Penanganan Pengecualian C++: Contoh Praktis Try, Catch, Throw

Rincian Kode:

  1. Turunkan NewException dari std::exception dan override what().
  2. Buat objek newex untuk dilemparkan.
  3. Lemparkan newex di dalam blok try.
  4. Tangkap oleh referensi ke std::exception dan cetak pesan melalui what().

Kesimpulan

Bahasa C

  1. Komentar C++: Praktik Terbaik untuk Kode yang Mudah Dibaca dan Dipelihara
  2. Menguasai Penanganan Exception Python: try, except, else, dan finally Dijelaskan
  3. Menguasai Penanganan Pengecualian Java: Try, Catch, Finally, Throw & Throws Dijelaskan
  4. Menguasai Penanganan Pengecualian Java: Try, Catch, Finally, dan Sumber Daya
  5. Menguasai Switch-Case C++: Sintaks, Penggunaan, dan Contoh Praktis
  6. Menguasai Alokasi Array Dinamis C++: Panduan Praktis dengan Contoh Kode
  7. Struct C++ Dijelaskan dengan Contoh Praktis
  8. Menguasai std::list dalam C++: Sintaks, Fungsi & Contoh Praktis
  9. Struktur vs Kelas C++: Perbedaan Utama, Sintaks, dan Kasus Penggunaan Terbaik
  10. 15 IDE C++ Terbaik untuk Windows, macOS & Linux – Opsi Gratis & Berbayar (2021)