Rumah >pembangunan bahagian belakang >C++ >Cara Menentukan Pengecualian yang Tidak Terkendali: Penyelaman mendalam ke dalam Pengecualian Tersuai dan Makro

Cara Menentukan Pengecualian yang Tidak Terkendali: Penyelaman mendalam ke dalam Pengecualian Tersuai dan Makro

Susan Sarandon
Susan Sarandonasal
2024-11-18 19:23:02732semak imbas

How to Pinpoint Unhandled Exceptions: A Deep Dive into Custom Exceptions and Macros

Mendedahkan Sumber Pengecualian Tidak Terkendali

Apabila pengecualian timbul semasa pelaksanaan program, mengesan asalnya boleh menjadi penting untuk menyelesaikan masalah. Sekiranya tiada maklumat baris kod eksplisit yang dibenamkan dalam mesej pengecualian, pengecualian yang tidak dikendalikan dan luaran boleh menyebabkan pembangun dalam kegelapan.

Selam Lebih Dalam ke Pengecualian Tersuai dan Makro

Untuk menangani cabaran ini, penyelesaian yang mantap melibatkan mencipta kelas pengecualian tersuai dan memanfaatkan makro.

Kelas my_exception memanjangkan kelas std::runtime_error dan menggabungkan ahli msg tambahan untuk menyimpan mesej pengecualian. Pembina kelas ini membina mesej dengan menggabungkan fail sumber, nombor baris dan argumen pengecualian asal.

Seterusnya, makro throw_line memudahkan proses melontar pengecualian dengan maklumat baris. Ia memerlukan hujah yang mewakili mesej pengecualian dan secara automatik menambah butiran fail dan nombor baris pada objek my_exception.

Melaksanakannya

Pertimbangkan coretan kod berikut:

void f() {
    throw_line("Oh no!");
}

int main() {
    try {
        f();
    }
    catch (const std::runtime_error &ex) {
        std::cout << ex.what() << std::endl;
    }
}

Apabila pengecualian dilemparkan dalam fungsi f, makro throw_line menyediakan kedua-dua mesej pengecualian ("Oh tidak!") dan nombor baris tempat ia berlaku. Maklumat ini boleh diakses melalui kaedah what() objek my_exception.

Dengan menggunakan pendekatan ini, pembangun memperoleh alat yang berharga untuk mengenal pasti dengan tepat sumber pengecualian, walaupun ia berasal daripada sumber yang tidak dikendalikan atau luaran.

Atas ialah kandungan terperinci Cara Menentukan Pengecualian yang Tidak Terkendali: Penyelaman mendalam ke dalam Pengecualian Tersuai dan Makro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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