Makro GetExceptionCode

Mengambil kode yang mengidentifikasi jenis pengecualian yang terjadi. Fungsi hanya dapat dipanggil dari dalam ekspresi filter atau blok handler pengecualian dari handler pengecualian.

Catatan

Microsoft C/C++ Optimizing Compiler menafsirkan fungsi ini sebagai kata kunci, dan penggunaannya di luar sintaks penanganan pengecualian yang sesuai menghasilkan kesalahan pengkompilasi.

 

Sintaks

DWORD GetExceptionCode(void);

Parameter

Makro ini tidak memiliki parameter.

Menampilkan nilai

Nilai yang dikembalikan mengidentifikasi jenis pengecualian. Tabel berikut mengidentifikasi kode pengecualian yang dapat terjadi karena kesalahan pemrograman umum. Nilai-nilai ini didefinisikan dalam WinBase.h dan WinNT.h.

Menampilkan kode Deskripsi
EXCEPTION_ACCESS_VIOLATION
Utas mencoba membaca dari atau menulis ke alamat virtual yang tidak memiliki akses.
Nilai ini didefinisikan sebagai STATUS_ACCESS_VIOLATION.
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
Utas mencoba mengakses elemen array yang berada di luar batas, dan perangkat keras yang mendasar mendukung pemeriksaan batas.
Nilai ini didefinisikan sebagai STATUS_ARRAY_BOUNDS_EXCEEDED.
EXCEPTION_BREAKPOINT
Titik henti ditemui.
Nilai ini didefinisikan sebagai STATUS_BREAKPOINT.
EXCEPTION_DATATYPE_MISALIGNMENT
Utas mencoba membaca atau menulis data yang tidak selaras pada perangkat keras yang tidak memberikan penyelarasan. Misalnya, nilai 16-bit harus diratakan pada batas 2-byte, nilai 32-bit pada batas 4-byte, dan sebagainya.
Nilai ini didefinisikan sebagai STATUS_DATATYPE_MISALIGNMENT.
EXCEPTION_FLT_DENORMAL_OPERAND
Salah satu operan dalam operasi floating point adalah denormal. Nilai denormal adalah nilai yang terlalu kecil untuk diwakili sebagai nilai titik float standar.
Nilai ini didefinisikan sebagai STATUS_FLOAT_DENORMAL_OPERAND.
EXCEPTION_FLT_DIVIDE_BY_ZERO
Utas mencoba membagi nilai titik float dengan pembagi titik float 0 (nol).
Nilai ini didefinisikan sebagai STATUS_FLOAT_DIVIDE_BY_ZERO.
EXCEPTION_FLT_INEXACT_RESULT
Hasil dari operasi floating point tidak dapat direpresentasikan persis sebagai pecahan desimal.
Nilai ini didefinisikan sebagai STATUS_FLOAT_INEXACT_RESULT.
EXCEPTION_FLT_INVALID_OPERATION
Pengecualian titik mengambang yang tidak disertakan dalam daftar ini.
Nilai ini didefinisikan sebagai STATUS_FLOAT_INVALID_OPERATION.
EXCEPTION_FLT_OVERFLOW
Eksponen operasi floating point lebih besar dari besaran yang diizinkan oleh jenis yang sesuai.
Nilai ini didefinisikan sebagai STATUS_FLOAT_OVERFLOW.
EXCEPTION_FLT_STACK_CHECK
Tumpukan telah meluap atau mengalami underflow, karena operasi floating point.
Nilai ini didefinisikan sebagai STATUS_FLOAT_STACK_CHECK.
EXCEPTION_FLT_UNDERFLOW
Eksponen operasi floating point kurang dari besaran yang diizinkan oleh jenis yang sesuai.
Nilai ini didefinisikan sebagai STATUS_FLOAT_UNDERFLOW.
EXCEPTION_GUARD_PAGE
Memori yang diakses utas dialokasikan dengan pengubah PAGE_GUARD.
Nilai ini didefinisikan sebagai STATUS_GUARD_PAGE_VIOLATION.
EXCEPTION_ILLEGAL_INSTRUCTION
Utas mencoba menjalankan instruksi yang tidak valid.
Nilai ini didefinisikan sebagai STATUS_ILLEGAL_INSTRUCTION.
EXCEPTION_IN_PAGE_ERROR
Utas mencoba mengakses halaman yang tidak ada, dan sistem tidak dapat memuat halaman. Misalnya, pengecualian ini mungkin terjadi jika koneksi jaringan hilang saat menjalankan program melalui jaringan.
Nilai ini didefinisikan sebagai STATUS_IN_PAGE_ERROR.
EXCEPTION_INT_DIVIDE_BY_ZERO
Utas mencoba membagi nilai bilangan bulat dengan pembagi bilangan bulat 0 (nol).
Nilai ini didefinisikan sebagai STATUS_INTEGER_DIVIDE_BY_ZERO.
EXCEPTION_INT_OVERFLOW
Hasil operasi bilangan bulat menciptakan nilai yang terlalu besar untuk dipegang oleh register tujuan. Dalam beberapa kasus, ini akan menghasilkan sedikit hasil yang paling signifikan. Beberapa operasi tidak mengatur bendera carry.
Nilai ini didefinisikan sebagai STATUS_INTEGER_OVERFLOW.
EXCEPTION_INVALID_DISPOSITION
Handler pengecualian mengembalikan disposisi yang tidak valid ke dispatcher pengecualian. Programmer yang menggunakan bahasa tingkat tinggi seperti C tidak boleh mengalami pengecualian ini.
Nilai ini didefinisikan sebagai STATUS_INVALID_DISPOSITION.
EXCEPTION_INVALID_HANDLE
Utas menggunakan handel ke objek kernel yang tidak valid (mungkin karena telah ditutup.)
Nilai ini didefinisikan sebagai STATUS_INVALID_HANDLE.
EXCEPTION_NONCONTINUABLE_EXCEPTION
Utas mencoba melanjutkan eksekusi setelah pengecualian yang tidak dapat dilanjutkan terjadi.
Nilai ini didefinisikan sebagai STATUS_NONCONTINUABLE_EXCEPTION.
EXCEPTION_PRIV_INSTRUCTION
Utas mencoba menjalankan instruksi dengan operasi yang tidak diizinkan dalam mode komputer saat ini.
Nilai ini didefinisikan sebagai STATUS_PRIVILEGED_INSTRUCTION.
EXCEPTION_SINGLE_STEP
Perangkap jejak atau mekanisme instruksi tunggal lainnya menandakan bahwa satu instruksi dijalankan.
Nilai ini didefinisikan sebagai STATUS_SINGLE_STEP.
EXCEPTION_STACK_OVERFLOW
Utas menggunakan tumpukannya.
Nilai ini didefinisikan sebagai STATUS_STACK_OVERFLOW.
STATUS_UNWIND_CONSOLIDATE
Konsolidasi bingkai telah dijalankan.

 

Keterangan

Fungsi GetExceptionCode hanya dapat dipanggil dari dalam ekspresi filter atau blok handler pengecualian dari handler pengecualian. Ekspresi filter dievaluasi jika pengecualian terjadi selama eksekusi blok __try , dan menentukan apakah blok __except dijalankan atau tidak.

Ekspresi filter dapat memanggil fungsi filter. Fungsi filter tidak dapat memanggil GetExceptionCode. Namun, nilai pengembalian GetExceptionCode dapat diteruskan sebagai parameter ke fungsi filter. Nilai yang dikembalikan dari fungsi GetExceptionInformation juga dapat diteruskan sebagai parameter ke fungsi filter. GetExceptionInformation mengembalikan pointer ke struktur yang menyertakan informasi kode pengecualian.

Saat handler berlapis ada, setiap ekspresi filter dievaluasi hingga salah satunya dievaluasi sebagai EXCEPTION_EXECUTE_HANDLER atau EXCEPTION_CONTINUE_EXECUTION. Setiap ekspresi filter dapat memanggil GetExceptionCode untuk mendapatkan kode pengecualian.

Kode pengecualian yang dikembalikan adalah kode yang dihasilkan oleh pengecualian perangkat keras, atau kode yang ditentukan dalam fungsi RaiseException untuk pengecualian yang dihasilkan perangkat lunak.

Saat menangani pengecualian titik henti, penting untuk menambah penunjuk instruksi dalam rekaman konteks untuk melanjutkan dari pengecualian ini.

Contoh

Misalnya, lihat Menggunakan Handler Pengecualian.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows XP [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2003 [hanya aplikasi desktop]

Lihat juga

GetExceptionInformation

RaiseException

Fungsi Penanganan Pengecualian Terstruktur

Gambaran Umum Penanganan Pengecualian Terstruktur