Bagikan melalui


IDebugStackFrame3::InterceptCurrentException

Dipanggil oleh debugger pada bingkai tumpukan saat ini ketika ingin mencegat pengecualian saat ini.

Sintaks

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

Parameter

dwFlags
[di] Menentukan tindakan yang berbeda. Saat ini, hanya nilai IEA_INTERCEPT INTERCEPT_EXCEPTION_ACTION yang didukung dan harus ditentukan.

pqwCookie
[out] Nilai unik yang mengidentifikasi pengecualian tertentu.

Tampilkan Nilai

Jika berhasil, mengembalikan S_OK; jika tidak, mengembalikan kode kesalahan.

Berikut ini adalah pengembalian kesalahan yang paling umum.

Kesalahan Deskripsi
E_EXCEPTION_CANNOT_BE_INTERCEPTED Pengecualian saat ini tidak dapat dicegat.
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK Bingkai eksekusi saat ini belum dicari untuk handler.
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED Metode ini tidak didukung untuk bingkai ini.

Keterangan

Ketika pengecualian dilemparkan, debugger mendapatkan kontrol dari run time pada titik kunci selama proses penanganan pengecualian. Selama momen kunci ini, debugger dapat menanyakan bingkai tumpukan saat ini jika bingkai ingin mencegat pengecualian. Dengan cara ini, pengecualian yang disadap pada dasarnya adalah handler pengecualian on-the-fly untuk bingkai tumpukan, bahkan jika bingkai tumpukan tersebut tidak memiliki handler pengecualian (misalnya, blok try/catch dalam kode program).

Ketika debugger ingin tahu apakah pengecualian harus dicegat, debugger memanggil metode ini pada objek bingkai tumpukan saat ini. Metode ini bertanggung jawab untuk menangani semua detail pengecualian. Jika antarmuka IDebugStackFrame3 tidak diimplementasikan atau InterceptStackException metode mengembalikan kesalahan apa pun, maka debugger terus memproses pengecualian secara normal.

Catatan

Pengecualian hanya dapat disadap dalam kode terkelola, yaitu, ketika program yang di-debug berjalan di bawah waktu proses .NET. Tentu saja, implementer bahasa pihak ketiga dapat menerapkan InterceptStackException di mesin debug mereka sendiri jika mereka memilih.

Setelah intersepsi selesai, IDebugInterceptExceptionCompleteEvent2 disinyalir.

Baca juga