set_unexpected
(CRT)
Menginstal fungsi penghentian Anda sendiri untuk dipanggil oleh unexpected
.
Sintaks
unexpected_function set_unexpected( unexpected_function unexpFunction );
Parameter
unexpFunction
Penunjuk ke fungsi yang Anda tulis untuk menggantikan unexpected
fungsi.
Nilai hasil
Mengembalikan penunjuk ke fungsi penghentian sebelumnya yang didaftarkan oleh _set_unexpected
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_unexpected
ini diinstal unexpFunction
sebagai fungsi yang dipanggil oleh unexpected
. unexpected
tidak digunakan dalam implementasi penanganan pengecualian C++ saat ini. unexpected_function
Jenis didefinisikan dalam EH. H sebagai penunjuk ke fungsi tak terduga yang ditentukan pengguna, unexpFunction
yang mengembalikan void
. Fungsi kustom unexpFunction
Anda tidak boleh kembali ke pemanggilnya.
typedef void ( *unexpected_function )( );
Secara default, unexpected
memanggil terminate
. Anda dapat mengubah perilaku default ini dengan menulis fungsi penghentian Anda sendiri dan memanggil set_unexpected
dengan nama fungsi Anda sebagai argumennya. unexpected
memanggil fungsi terakhir yang diberikan sebagai argumen ke set_unexpected
.
Tidak seperti fungsi penghentian kustom yang diinstal oleh panggilan ke set_terminate
, pengecualian dapat dilemparkan dari dalam unexpFunction
.
Di lingkungan multithreaded, fungsi tak terduga dipertahankan secara terpisah untuk setiap utas. Setiap utas baru perlu menginstal fungsi tak terduganya sendiri. Dengan demikian, setiap utas bertanggung jawab atas penanganannya sendiri yang tidak terduga.
Dalam implementasi Microsoft saat ini dari penanganan pengecualian C++, unexpected
panggilan terminate
secara default dan tidak pernah dipanggil oleh pustaka run-time penanganan pengecualian. Tidak ada keuntungan khusus untuk memanggil unexpected
daripada terminate
.
Ada satu set_unexpected
handler untuk semua DLL atau EXE yang ditautkan secara dinamis; bahkan jika Anda memanggil set_unexpected
handler Anda dapat digantikan oleh yang lain atau Anda mengganti handler yang ditetapkan oleh DLL atau EXE lain.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
set_unexpected |
<eh.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Baca juga
Rutinitas penanganan pengecualian
abort
_get_unexpected
set_terminate
terminate
unexpected
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk