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
Lepaskan: 2024-11-18 19:23:02
asal
730 orang telah melayarinya

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;
    }
}
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan