Bagikan melalui


set_terminate (CRT)

Menginstal rutinitas penghentian Anda sendiri untuk dipanggil oleh terminate.

Sintaks

terminate_function set_terminate( terminate_function termFunction );

Parameter

termFunction
Penunjuk ke fungsi penghentian yang Anda tulis.

Nilai hasil

Mengembalikan penunjuk ke fungsi sebelumnya yang didaftarkan oleh set_terminate sehingga fungsi sebelumnya dapat dipulihkan nanti. Jika tidak ada fungsi sebelumnya yang ditetapkan, nilai pengembalian dapat digunakan untuk memulihkan perilaku default; nilai ini mungkin NULL.

Keterangan

Fungsi set_terminate ini diinstal termFunction sebagai fungsi yang dipanggil oleh terminate. set_terminate digunakan dengan penanganan pengecualian C++ dan dapat dipanggil pada titik mana pun dalam program Anda sebelum pengecualian dilemparkan. terminateabort panggilan secara default. Anda dapat mengubah default ini dengan menulis fungsi penghentian Anda sendiri dan memanggil set_terminate dengan nama fungsi Anda sebagai argumennya. terminate memanggil fungsi terakhir yang diberikan sebagai argumen ke set_terminate. Setelah melakukan tugas pembersihan yang diinginkan, termFunction harus keluar dari program. Jika tidak keluar (jika kembali ke pemanggilnya), abort dipanggil.

Di lingkungan multithreaded, fungsi penghentian dipertahankan secara terpisah untuk setiap utas. Setiap utas baru perlu menginstal fungsi penghentiannya sendiri. Dengan demikian, setiap utas bertanggung jawab atas penanganan penghentiannya sendiri.

terminate_function Jenis didefinisikan dalam EH. H sebagai penunjuk ke fungsi penghentian yang ditentukan pengguna, termFunction yang mengembalikan void. Fungsi termFunction kustom Anda tidak dapat mengambil argumen dan tidak boleh kembali ke pemanggilnya. Jika ya, abort dipanggil. Pengecualian mungkin tidak dilemparkan dari dalam termFunction.

typedef void ( *terminate_function )( );

Catatan

Fungsi set_terminate ini hanya berfungsi di luar debugger.

Ada satu set_terminate handler untuk semua DLL atau EXE yang ditautkan secara dinamis; bahkan jika Anda memanggil set_terminate handler Anda dapat digantikan oleh yang lain, atau Anda mungkin mengganti handler yang ditetapkan oleh DLL atau EXE lain.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
set_terminate <eh.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Lihat contoh untuk terminate.

Lihat juga

Rutinitas penanganan pengecualian
abort
_get_terminate
set_unexpected
terminate
unexpected