Pengecualian C++


Pengecualian C++

Saat mengeksekusi kode C++, kesalahan yang berbeda dapat terjadi: kesalahan pengkodean yang dibuat oleh programmer, kesalahan karena input yang salah, atau hal-hal lain yang tidak terduga.

Ketika terjadi kesalahan, C++ biasanya akan berhenti dan menghasilkan pesan kesalahan. Istilah teknis untuk ini adalah: C++ akan melempar pengecualian (melempar kesalahan).


C++ coba dan tangkap

Penanganan eksepsi dalam C++ terdiri dari tiga kata kunci: try, throwdan catch:

Pernyataan trytersebut memungkinkan Anda untuk menentukan blok kode yang akan diuji kesalahannya saat sedang dieksekusi.

Kata throwkunci mengeluarkan pengecualian ketika masalah terdeteksi, yang memungkinkan kami membuat kesalahan khusus.

Pernyataan catchtersebut memungkinkan Anda untuk menentukan blok kode yang akan dieksekusi, jika terjadi kesalahan pada blok try.

Kata kunci trydan catchberpasangan:

Contoh

try {
  // Block of code to try
  throw exception; // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

Perhatikan contoh berikut:

Contoh

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Age is: " << myNum;
}

Contoh dijelaskan

Kami menggunakan tryblok untuk menguji beberapa kode: Jika agevariabel kurang dari 18, kami akan throwmembuat pengecualian, dan menanganinya di catchblok kami.

Di catchblok, kami menangkap kesalahan dan melakukan sesuatu untuk itu. Pernyataan catch mengambil parameter : dalam contoh kita, kita menggunakan intvariabel ( myNum) (karena kita melempar pengecualian inttipe di tryblok ( age)), untuk menampilkan nilai age.

Jika tidak ada kesalahan yang terjadi (misalnya jika agebukan 20, 15artinya akan lebih besar dari 18), catchblok dilewati:

Contoh

int age = 20;

Anda juga dapat menggunakan throwkata kunci untuk menampilkan nomor referensi, seperti nomor/kode kesalahan khusus untuk tujuan pengorganisasian:

Contoh

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Error number: " << myNum;
}

Menangani Semua Jenis Pengecualian (...)

Jika Anda tidak mengetahui throw jenis yang digunakan dalam tryblok, Anda dapat menggunakan sintaks "tiga titik" ( ...) di dalam catchblok, yang akan menangani semua jenis pengecualian:

Contoh

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "Access denied - You must be at least 18 years old.\n";
}