Penanganan Penghentian

Handler penghentian memastikan bahwa blok kode tertentu dijalankan setiap kali alur aliran kontrol meninggalkan badan kode yang dijaga tertentu. Handler penghentian terdiri dari elemen berikut.

  • Fragmen kode yang dilindungi
  • Blok kode untuk penyelesaian yang akan dijalankan ketika alur kendali meninggalkan bagian yang dilindungi.

Penangan penghentian dinyatakan dalam sintaksis khusus bahasa. Menggunakan Microsoft C/C++ Optimizing Compiler, mereka diimplementasikan menggunakan __try dan __finally. Untuk informasi selengkapnya, lihat Sintaks Handler .

Isi kode yang dijaga dapat berupa blok kode, sekumpulan blok berlapis, atau seluruh prosedur atau fungsi. Setiap kali bagian yang dilindungi dijalankan, blok kode penghentian akan dijalankan. Satu-satunya pengecualian untuk ini adalah ketika utas berakhir selama eksekusi bagian yang dilindungi (misalnya, jika fungsi ExitThread atau ExitProcess dipanggil dari dalam bagian yang dilindungi).

Blok penghentian dijalankan ketika alur kontrol meninggalkan blok yang diawasi, terlepas dari apakah blok yang diawasi berhenti secara normal atau abnormal. Bagian yang dijaga dianggap dihentikan secara normal ketika pernyataan terakhir dalam blok dijalankan dan kontrol berlanjut secara berurutan ke blok penghentian. Penghentian abnormal terjadi ketika aliran kontrol meninggalkan tubuh yang dijaga karena pengecualian, atau karena pernyataan kontrol seperti mengembalikan, goto, break, atau lanjutkan. Fungsi AbnormalTermination dapat dipanggil dari dalam blok penghentian untuk menentukan apakah bagian yang dijaga berhenti secara normal.