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

Penanganan Pengecualian C++:Coba, Tangkap, lempar Contoh

Apa itu Penanganan Pengecualian di C++?

Penanganan pengecualian di C++ memberi Anda cara menangani keadaan tak terduga seperti kesalahan runtime. Jadi setiap kali keadaan tak terduga terjadi, kontrol program ditransfer ke fungsi khusus yang dikenal sebagai handler.

Untuk menangkap pengecualian, Anda menempatkan beberapa bagian kode di bawah pemeriksaan pengecualian. Bagian kode ditempatkan di dalam blok try-catch.

Jika situasi luar biasa terjadi dalam bagian kode itu, pengecualian akan dilemparkan. Selanjutnya, exception handler akan mengambil alih kendali program.

Jika tidak ada keadaan luar biasa yang terjadi, kode akan dijalankan secara normal. Para penangan akan diabaikan.

Dalam tutorial C++ ini, Anda akan belajar:

Mengapa Penanganan Pengecualian?

Berikut alasan penggunaan Exception Handling di C++:

Kata Kunci Penanganan Pengecualian

Penanganan pengecualian di C++ berkisar pada tiga kata kunci ini:

Misalkan blok kode akan memunculkan pengecualian. Pengecualian akan ditangkap oleh metode menggunakan kata kunci coba dan tangkap. Blok coba/tangkap harus mengelilingi kode yang mungkin menimbulkan pengecualian. Kode tersebut dikenal sebagai kode yang dilindungi.

Sintaks:

Try/catch menggunakan sintaks ini:

try {
   // the protected code
} catch( Exception_Name exception1 ) {
   // catch block
} catch( Exception_Name exception2 ) {
   // catch block
} catch( Exception_Name exceptionN ) {
   // catch block
}

Contoh 1:

#include<iostream>
#include<vector>
using namespace std;

int main() {
	vector<int> vec;
	vec.push_back(0);	
	vec.push_back(1);	
	// access the third element, which doesn't exist
	try
	{
		vec.at(2);		
	}
	catch (exception& ex)
	{
		cout << "Exception occurred!" << endl;
	}
	return 0;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream dalam program untuk menggunakan fungsinya.
  2. Sertakan file header vektor dalam program untuk menggunakan fungsinya.
  3. Sertakan namespace std dalam program ke kelasnya tanpa memanggilnya.
  4. Panggil fungsi main(). Logika program harus ditambahkan di dalam tubuhnya.
  5. Buat sebuah vektor bernama vec untuk menyimpan data integer.
  6. Tambahkan elemen 0 ke vektor bernama vec.
  7. Tambahkan elemen 1 ke vektor bernama vec.
  8. Komentar. Ini akan dilewati oleh kompiler C++.
  9. Gunakan pernyataan try untuk menangkap pengecualian. { menandai awal dari isi blok try/catch. Kode yang ditambahkan di dalam tubuh akan menjadi kode yang dilindungi.
  10. Coba akses elemen yang disimpan pada indeks 2 (elemen ketiga) dari vektor bernama vec. Elemen ini tidak ada.
  11. Akhir dari isi blok try/catch.
  12. Tangkap pengecualian. Pesan kesalahan yang dikembalikan akan disimpan dalam variabel ex.
  13. Cetak beberapa pesan di konsol jika pengecualian tertangkap.
  14. Akhir dari badan blok tangkapan.
  15. Program harus mengembalikan nilai setelah eksekusi berhasil.
  16. Akhir dari badan fungsi main().

Contoh 2:

#include <iostream>
using namespace std;
double zeroDivision(int x, int y) {

	if (y == 0) {
		throw "Division by Zero!";
	}
	return (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;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream dalam program untuk menggunakan fungsinya.
  2. Sertakan namespace std dalam program ke kelasnya tanpa memanggilnya.
  3. Buat fungsi bernama zeroDivision yang mengambil dua argumen integer, x, dan y. Fungsi harus mengembalikan hasil ganda.
  4. Gunakan pernyataan if untuk memeriksa apakah nilai argumen variabel y adalah 0. { menandai awal dari badan if.
  5. Pesan yang akan dikembalikan/dilempar jika y adalah 0.
  6. Akhir dari isi pernyataan if.
  7. Fungsi zeroDivision harus mengembalikan nilai x/y.
  8. Akhir dari isi fungsi zeroDivision.
  9. Panggil metode main(). { menandai awal dari metode ini.
  10. Deklarasikan variabel integer dan beri nilai 11.
  11. Deklarasikan variabel integer b dan beri nilai 0.
  12. Deklarasikan variabel ganda c dan beri nilai 0.
  13. Gunakan pernyataan try untuk menangkap pengecualian. { menandai awal dari isi blok try/catch. Kode yang ditambahkan di dalam tubuh akan menjadi kode yang dilindungi.
  14. Panggil fungsi zeroDivision dan meneruskan ke argumen a dan b, yaitu 11 dan 0. Hasil operasi ini akan disimpan dalam variabel c.
  15. Cetak nilai variabel c di konsol.
  16. Akhir dari isi blok try/catch.
  17. Tangkap pengecualian. Pesan kesalahan yang dikembalikan akan disimpan dalam pesan variabel.
  18. Cetak pesan kesalahan yang dikembalikan di konsol.
  19. Akhir dari badan blok tangkapan.
  20. Program harus mengembalikan nilai setelah eksekusi berhasil.
  21. Akhir dari badan fungsi main().

Pengecualian Standar C++

C++ hadir dengan daftar pengecualian standar yang didefinisikan dalam kelas . Ini dijelaskan di bawah ini:

Pengecualian Deskripsi std::exceptionIni adalah pengecualian dan kelas induk dari semua pengecualian C++ standar.std::bad_allocPengecualian ini dilontarkan oleh kata kunci baru.std::bad_castIni adalah pengecualian yang dilemparkan oleh dynamic_cast.std::bad_exceptionPerangkat yang berguna untuk menangani pengecualian tak terduga pada program C++ .std::length_errorPengecualian dilemparkan setelah membuat std::string.std::out_of_rangeDilemparkan oleh di method.std::runtime_errorIni adalah pengecualian yang tidak dapat dideteksi dengan membaca kode.std::overflow_errorPengecualian ini dilempar setelah kejadian dari overflow.std matematis::range_errorPengecualian ini dilempar ketika Anda mencoba untuk menyimpan nilai di luar jangkauan.std::underflow_errorPengecualian yang dilemparkan setelah kemunculan m aliran bawah matematis.

Pengecualian Buatan Pengguna

Kelas C++ std::exception memungkinkan kita untuk mendefinisikan objek yang dapat dilempar sebagai pengecualian. Kelas ini telah didefinisikan di header . Kelas memberi kita fungsi anggota virtual bernama apa.

Fungsi ini mengembalikan urutan karakter yang diakhiri dengan null dari tipe char *. Kita bisa menimpanya di kelas turunan untuk memiliki deskripsi pengecualian.

Contoh:

#include <iostream>
#include <exception>
using namespace std;

class newException : public exception
{
	virtual const char* what() const throw()
	{
		return "newException occurred";
	}
} newex;

int main() {

	try {
		throw newex;
		}
	catch (exception& ex) {
		cout << ex.what() << '\n';
	}
	return 0;	
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream dalam program kami. Kami akan menggunakan fungsinya tanpa mendapatkan kesalahan.
  2. Sertakan file header pengecualian dalam program kami. Kita akan menggunakan fungsinya seperti apa tanpa error.
  3. Sertakan ruang nama std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
  4. Buat kelas baru bernama newException. Kelas ini mewarisi kelas pengecualian C++.
  5. Awal badan kelas.
  6. Timpa fungsi anggota virtual what() yang didefinisikan dalam file header pengecualian. Kami kemudian akan menjelaskan pengecualian kami sendiri, pengecualian baru.
  7. Mulai definisi pengecualian baru.
  8. Pesan yang akan dikembalikan jika pengecualian baru tertangkap.
  9. Akhir dari definisi pengecualian baru.
  10. Akhir dari isi kelas newException. Newex adalah nama yang akan digunakan untuk menangkap pengecualian baru kami, setelah itu newException akan dipanggil.
  11. Panggil fungsi main(). Logika program harus ditambahkan di dalam tubuhnya. { menandai awal dari tubuhnya.
  12. Gunakan pernyataan try untuk menandai kode di mana kita perlu menandai pengecualian. { menandai awal dari isi blok try/catch. Kode yang dikelilingi oleh ini akan menjadi terlindungi.
  13. Buang pengecualian newex jika ketahuan.
  14. Akhir dari badan percobaan.
  15. Gunakan pernyataan catch untuk menangkap pengecualian. Pesan error exception akan disimpan dalam variabel ex.
  16. Cetak pesan kesalahan pengecualian di konsol.
  17. Akhir dari isi pernyataan catch.
  18. Program harus mengembalikan nilai jika berhasil dijalankan.
  19. Akhir dari isi fungsi main().

Ringkasan:


Bahasa C

  1. Komentar C++
  2. Penanganan Pengecualian Python Menggunakan pernyataan coba, kecuali dan akhirnya
  3. Penanganan Pengecualian Java
  4. Jawa coba ... tangkap
  5. C++ Switch Case Statement dengan CONTOH
  6. C++ Alokasi Dinamis Array dengan Contoh
  7. Struktur C++ Dengan Contoh
  8. std::daftar di C++ dengan Contoh
  9. Perbedaan antara Struktur dan Kelas:Dijelaskan dengan Contoh C++
  10. 15 IDE C++ Terbaik:Editor Windows Gratis | Kompiler | 2021