Rumah pembangunan bahagian belakang C++ Bagaimana untuk merangkum pengecualian dalam pengendalian pengecualian fungsi C++?

Bagaimana untuk merangkum pengecualian dalam pengendalian pengecualian fungsi C++?

Apr 15, 2024 pm 04:45 PM
c++ Pengendalian pengecualian perpustakaan standard

Pengenkapsulan pengecualian C++ meningkatkan kebolehbacaan dan kebolehselenggaraan kod dan boleh memisahkan maklumat ralat daripada logik pemprosesan. Maklumat ralat boleh dirangkumkan dengan mentakrifkan kelas pengecualian yang mewarisi daripada std::exception. Gunakan lontaran untuk melontar pengecualian dan cuba tangkap untuk menangkap pengecualian. Dalam kes sebenar, fungsi yang membaca fail menggunakan kelas pengecualian untuk merangkum ralat kegagalan untuk membuka fail Apabila memanggil fungsi ini, pengecualian boleh ditangkap dan mesej ralat boleh dicetak.

C++ 函数异常处理中如何封装异常?

Pengenkapsulan pengecualian dalam pengendalian pengecualian fungsi C++

Dalam fungsi C++, enkapsulasi pengecualian boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dengan merangkum pengecualian, anda boleh memisahkan maklumat ralat daripada memproses logik, mencipta kod yang lebih jelas dan lebih mudah difahami.

Takrif kelas pengecualian

Pertama, kita perlu mentakrifkan kelas pengecualian untuk merangkum maklumat ralat. Kelas ini harus mewarisi daripada kelas pengecualian perpustakaan standard std::exception. Contohnya: std::exception。例如:

class MyException : public std::exception {
public:
  MyException(const std::string& message) : std::exception(message) {}
};
Salin selepas log masuk

这个异常类定义了一个构造函数,它接受一个字符串参数并将其作为异常消息。

函数中的异常抛出

在函数中抛出一个异常很简单。可以使用 throw 关键字后跟异常对象:

void myFunction() {
  if (someCondition) {
    throw MyException("发生了一些错误!");
  }
}
Salin selepas log masuk

函数中的异常捕捉

要捕捉异常,可以使用 trycatch 块:

int main() {
  try {
    myFunction();
  }
  catch (MyException& e) {
    std::cout << "错误:" << e.what() << std::endl;
  }
}
Salin selepas log masuk

实战案例

考虑一个读取文件并计算文件总行数的函数:

int countLines(const std::string& filepath) {
  std::ifstream ifs(filepath);
  if (!ifs.is_open()) {
    throw MyException("无法打开文件!");
  }

  int count = 0;
  std::string line;
  while (std::getline(ifs, line)) {
    ++count;
  }
  return count;
}
Salin selepas log masuk

在这个函数中,我们使用 MyException

int main() {
  try {
    int lineCount = countLines("inputFile.txt");
    std::cout << "文件共 " << lineCount << " 行" << std::endl;
  }
  catch (MyException& e) {
    std::cout << "错误:" << e.what() << std::endl;
  }
}
Salin selepas log masuk
Kelas pengecualian ini mentakrifkan pembina yang menerima parameter rentetan sebagai mesej pengecualian. 🎜🎜🎜Melontar pengecualian dalam fungsi 🎜🎜🎜Melontar pengecualian dalam fungsi adalah mudah. Anda boleh menggunakan kata kunci throw diikuti dengan objek pengecualian: 🎜rrreee🎜🎜Exception catching dalam fungsi 🎜🎜🎜Untuk menangkap pengecualian, anda boleh menggunakan try dan catch Block: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Pertimbangkan fungsi yang membaca fail dan mengira jumlah baris dalam fail: 🎜rrreee🎜Dalam fungsi ini, kami menggunakan MyException kelas untuk merangkum mesej ralat kegagalan pembukaan fail. Apabila memanggil fungsi ini, kita boleh menangkap pengecualian dan mencetak mesej ralat: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk merangkum pengecualian dalam pengendalian pengecualian fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan Corak Reka Bentuk Strategi dalam C++? Bagaimana untuk melaksanakan Corak Reka Bentuk Strategi dalam C++? Jun 06, 2024 pm 04:16 PM

Langkah-langkah untuk melaksanakan corak strategi dalam C++ adalah seperti berikut: tentukan antara muka strategi dan isytiharkan kaedah yang perlu dilaksanakan. Buat kelas strategi khusus, laksanakan antara muka masing-masing dan sediakan algoritma yang berbeza. Gunakan kelas konteks untuk memegang rujukan kepada kelas strategi konkrit dan melaksanakan operasi melaluinya.

Apakah peranan char dalam c strings Apakah peranan char dalam c strings Apr 03, 2025 pm 03:15 PM

Dalam C, jenis char digunakan dalam rentetan: 1. Simpan satu watak; 2. Gunakan array untuk mewakili rentetan dan berakhir dengan terminator null; 3. Beroperasi melalui fungsi operasi rentetan; 4. Baca atau output rentetan dari papan kekunci.

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

Bagaimanakah anda mengendalikan pengecualian dengan berkesan dalam PHP (cuba, menangkap, akhirnya, membuang)? Bagaimanakah anda mengendalikan pengecualian dengan berkesan dalam PHP (cuba, menangkap, akhirnya, membuang)? Apr 05, 2025 am 12:03 AM

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.

Apakah jumlah yang digunakan secara umum dalam bahasa C? Apakah jumlah yang digunakan secara umum dalam bahasa C? Apr 03, 2025 pm 02:39 PM

Tiada fungsi yang dinamakan "SUM" dalam Perpustakaan Standard Bahasa C. "Jumlah" biasanya ditakrifkan oleh pengaturcara atau disediakan dalam perpustakaan tertentu, dan fungsinya bergantung kepada pelaksanaan tertentu. Senario biasa dijumlahkan untuk tatasusunan, dan juga boleh digunakan dalam struktur data lain, seperti senarai yang dipautkan. Di samping itu, "jumlah" juga digunakan dalam bidang seperti pemprosesan imej dan analisis statistik. Fungsi "jumlah" yang sangat baik harus mempunyai kebolehbacaan, ketahanan dan kecekapan yang baik.

Empat cara untuk melaksanakan multithreading dalam bahasa c Empat cara untuk melaksanakan multithreading dalam bahasa c Apr 03, 2025 pm 03:00 PM

Multithreading dalam bahasa dapat meningkatkan kecekapan program. Terdapat empat cara utama untuk melaksanakan multithreading dalam bahasa C: Buat proses bebas: Buat pelbagai proses berjalan secara bebas, setiap proses mempunyai ruang ingatan sendiri. Pseudo-Multithreading: Buat pelbagai aliran pelaksanaan dalam proses yang berkongsi ruang memori yang sama dan laksanakan secara bergantian. Perpustakaan multi-threaded: Gunakan perpustakaan berbilang threaded seperti PTHREADS untuk membuat dan mengurus benang, menyediakan fungsi operasi benang yang kaya. Coroutine: Pelaksanaan pelbagai threaded ringan yang membahagikan tugas menjadi subtask kecil dan melaksanakannya pada gilirannya.

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Cara Mengira C-SubScript 3 Subscript 5 C-SubScript 3 Subscript 5 Algoritma Tutorial Cara Mengira C-SubScript 3 Subscript 5 C-SubScript 3 Subscript 5 Algoritma Tutorial Apr 03, 2025 pm 10:33 PM

Pengiraan C35 pada dasarnya adalah matematik gabungan, yang mewakili bilangan kombinasi yang dipilih dari 3 dari 5 elemen. Formula pengiraan ialah C53 = 5! / (3! * 2!), Yang boleh dikira secara langsung oleh gelung untuk meningkatkan kecekapan dan mengelakkan limpahan. Di samping itu, memahami sifat kombinasi dan menguasai kaedah pengiraan yang cekap adalah penting untuk menyelesaikan banyak masalah dalam bidang statistik kebarangkalian, kriptografi, reka bentuk algoritma, dll.

See all articles