Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menentukan Sumber Tepat Pengecualian Tidak Terkendali?

Bagaimana untuk Menentukan Sumber Tepat Pengecualian Tidak Terkendali?

Mary-Kate Olsen
Lepaskan: 2024-11-14 11:30:02
asal
403 orang telah melayarinya

How to Pinpoint the Exact Source of Unhandled Exceptions?

Mengenal pasti Sumber Tepat Pengecualian Tidak Terkendali

Adalah selalunya wajar untuk menentukan baris kod tertentu yang menyebabkan pengecualian, walaupun ia tidak dijana secara eksplisit oleh pengaturcara.

Kelas Pengecualian Tersuai dan Makro

Pendekatan yang disyorkan melibatkan mencipta kelas pengecualian tersuai dan makro yang sepadan. Contohnya:

class my_exception : public std::runtime_error {
    std::string msg;
public:
    my_exception(const std::string &arg, const char *file, int line) :
    std::runtime_error(arg) {
        std::ostringstream o;
        o << file << ":" << line << ": " << arg;
        msg = o.str();
    }
    ~my_exception() throw() {}
    const char *what() const throw() {
        return msg.c_str();
    }
};
#define throw_line(arg) throw my_exception(arg, __FILE__, __LINE__);
Salin selepas log masuk

Penggunaan:

Kelas my_exception membina mesej pengecualian tersuai yang termasuk nama fail, nombor baris dan mesej ralat yang ditentukan pengguna. Makro throw_line digunakan untuk menjana pengecualian tersuai dengan mesej ralat yang dipertingkatkan ini.

Dalam contoh berikut, makro throw_line digunakan dalam fungsi f:

void f() {
    throw_line("Oh no!");
}
Salin selepas log masuk

Apabila f melontar pengecualian, fungsi utama menangkapnya dan mencetak mesej ralat tersuai ke konsol:

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

Pendekatan ini menyediakan mekanisme yang mudah untuk menjana pengecualian dengan maklumat terperinci tentang asal usulnya, tidak kira sama ada ia dijana secara eksplisit atau tidak.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Sumber Tepat Pengecualian Tidak Terkendali?. 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