Bagikan melalui


Pernyataan dan Pesan yang Disediakan Pengguna (C++)

Bahasa C++ mendukung tiga mekanisme penanganan kesalahan yang membantu Anda men-debug aplikasi Anda: direktif #error, kata kunci static_assert , dan makro pernyataan, _assert, _wassert makro. Ketiga mekanisme mengeluarkan pesan kesalahan, dan dua juga menguji pernyataan perangkat lunak. Pernyataan perangkat lunak menentukan kondisi yang Anda harapkan benar pada titik tertentu dalam program Anda. Jika pernyataan waktu kompilasi gagal, pengkompilasi mengeluarkan pesan diagnostik dan kesalahan kompilasi. Jika pernyataan run-time gagal, sistem operasi mengeluarkan pesan diagnostik dan menutup aplikasi Anda.

Keterangan

Masa pakai aplikasi Anda terdiri dari fase praproscessing, kompilasi, dan run time. Setiap mekanisme penanganan kesalahan mengakses informasi debug yang tersedia selama salah satu fase ini. Untuk men-debug secara efektif, pilih mekanisme yang menyediakan informasi yang sesuai tentang fase tersebut:

  • Direktif #error berlaku pada waktu pra-pemrosesan. Ini secara tanpa syarat memancarkan pesan yang ditentukan pengguna dan menyebabkan kompilasi gagal dengan kesalahan. Pesan dapat berisi teks yang dimanipulasi oleh arahan preprocessor tetapi ekspresi apa pun yang dihasilkan tidak dievaluasi.

  • Deklarasi static_assert berlaku pada waktu kompilasi. Ini menguji pernyataan perangkat lunak yang diwakili oleh ekspresi integral yang ditentukan pengguna yang dapat dikonversi ke Boolean. Jika ekspresi mengevaluasi ke nol (false), pengkompilasi mengeluarkan pesan yang ditentukan pengguna dan kompilasi gagal dengan kesalahan.

    static_assert Deklarasi ini sangat berguna untuk templat debugging karena argumen templat dapat disertakan dalam ekspresi yang ditentukan pengguna.

  • Makro pernyataan, _assert, _wassert makro berlaku pada waktu proses. Ini mengevaluasi ekspresi yang ditentukan pengguna, dan jika hasilnya nol, sistem mengeluarkan pesan diagnostik dan menutup aplikasi Anda. Banyak makro lain, seperti_ASSERT dan _ASSERTE, menyerupai makro ini tetapi mengeluarkan pesan diagnostik yang ditentukan sistem atau ditentukan pengguna yang berbeda.

Baca juga

#error Direktif (C/C++)
menegaskan Makro, _assert, _wassert
makro _ASSERT, _ASSERTE, _ASSERT_EXPR
static_assert
Makro _STATIC_ASSERT
Templat