Laksanakan mekanisme pengendalian pengecualian tersuai dalam C++

WBOY
Lepaskan: 2023-08-22 17:04:49
asal
1305 orang telah melayarinya

Laksanakan mekanisme pengendalian pengecualian tersuai dalam C++

Dalam C++, mekanisme pengendalian pengecualian ialah kemahiran pengaturcaraan yang sangat penting Ia membolehkan program bertindak balas dan mengendalikan ralat atau situasi tidak normal, dan mengelakkan ranap program atau membuang pengecualian yang tidak diketahui. Walau bagaimanapun, dalam C++, mekanisme pengendalian pengecualian lalai hanya boleh menangkap beberapa jenis pengecualian yang diketahui dan tidak boleh mengendalikan jenis pengecualian tersuai. Oleh itu, dalam artikel ini, kami akan memperkenalkan cara melaksanakan mekanisme pengendalian pengecualian tersuai dalam C++.

Kelas pengecualian tersuai

Pertama, kita perlu menentukan kelas pengecualian tersuai untuk mewakili jenis pengecualian tertentu. Dalam C++, kita boleh menentukan kelas pengecualian kita sendiri dengan mewarisi kelas std::exception. Berikut ialah contoh kelas pengecualian tersuai yang mudah:

#include <exception>
#include <string>

class MyException : public std::exception {
public:
    MyException(const std::string& msg) : m_msg(msg) {}

    virtual const char* what() const noexcept override {
        return m_msg.c_str();
    }

private:
    std::string m_msg;
};
Salin selepas log masuk

Dalam kod di atas, kami telah menentukan kelas pengecualian tersuai yang dipanggil MyException. Kelas ini mewarisi daripada kelas std::exception dan melaksanakan kaedah what() kelas ini. Kaedah ini digunakan untuk mengembalikan butiran pengecualian.

Lemparkan pengecualian tersuai

Apabila menggunakan kelas pengecualian tersuai, kita perlu membuat instantiat objek kelas ini dahulu, dan kemudian menggunakan kata kunci lontaran untuk membuangnya. Contohnya, kita boleh menggunakan kod berikut untuk membuang pengecualian tersuai dalam atur cara:

throw MyException("Something wrong happened!");
Salin selepas log masuk

Tangkap pengecualian tersuai

Apabila menangkap pengecualian tersuai, kita perlu menggunakan blok pernyataan cuba-tangkap. Sebagai contoh, kod berikut menunjukkan cara untuk menangkap MyException:

try {
    // some code that may throw MyException
} catch (const MyException& e) {
    // handle the exception here
    std::cerr << "Caught MyException with message: " << e.what() << '
';
}
Salin selepas log masuk

Jika program melemparkan pengecualian jenis MyException dalam blok pernyataan cuba, blok pernyataan tangkapan akan menangkap pengecualian dan melaksanakan kod pengendalian pengecualian yang sepadan.

Fungsi pengendalian pengecualian tersuai

Untuk mengendalikan pengecualian tersuai dengan lebih baik, kami boleh menentukan fungsi untuk mengendalikan semua jenis pengecualian. Sebagai contoh, dalam kod berikut, kami telah mentakrifkan fungsi yang dipanggil handleException untuk mengendalikan semua jenis pengecualian:

#include <iostream>

void handleException(const std::exception& e) noexcept {
    std::cerr << "Caught exception with message: " << e.what() << '
';
}

int main() {
    try {
        // some code that may throw an exception
    } catch (const std::exception& e) {
        handleException(e);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami telah menggunakan fungsi yang dipanggil handleException untuk mengendalikan semua jenis pengecualian. Dalam program, jika program melemparkan apa-apa jenis pengecualian, pengecualian akan diserahkan kepada fungsi handleException dan dikendalikan.

Ringkasan

Dalam C++, mekanisme pengendalian pengecualian tersuai ialah teknik yang sangat berguna, yang boleh membantu kami mengendalikan pengecualian dalam program dengan lebih baik dan mengelakkan ranap program atau membuang pengecualian yang tidak diketahui. Dalam artikel ini, kami memperkenalkan cara untuk menentukan kelas pengecualian anda sendiri dan menggunakan blok pernyataan cuba-tangkap untuk menangkap dan mengendalikan pengecualian tersuai. Pada masa yang sama, kami juga memperkenalkan cara mentakrifkan fungsi untuk mengendalikan semua jenis pengecualian untuk mengatur dan mengurus logik pengendalian pengecualian program dengan lebih baik.

Atas ialah kandungan terperinci Laksanakan mekanisme pengendalian pengecualian tersuai dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan