Rumah > pembangunan bahagian belakang > C++ > Apakah Tujuan dan Pelaksanaan __try dalam C pada Windows?

Apakah Tujuan dan Pelaksanaan __try dalam C pada Windows?

DDD
Lepaskan: 2024-11-07 15:04:02
asal
138 orang telah melayarinya

What is the Purpose and Implementation of __try in C   on Windows?

Memahami __cuba, cuba/tangkap/akhirnya dalam C

Dalam C , blok try/catch/finally biasanya digunakan untuk pengendalian pengecualian . Walau bagaimanapun, terdapat sintaks alternatif dengan garis bawah berganda, __try, yang khusus untuk Windows.

Bila Menggunakan __try

Pada Windows, pengendalian pengecualian dilaksanakan melalui Structured Pengendalian Pengecualian (SEH). Apabila menyasarkan Windows dengan pengkompil MSVC, sintaks __try boleh digunakan untuk menangkap pengecualian SEH.

Pengecualian SEH dan C

Pengkompil MSVC menjana kod yang memetakan pengecualian C kepada infrastruktur SEH, menggunakan kod pengecualian 0xe06d7363 ("msc"). Ini membolehkan pemusnah C dipanggil apabila pengecualian SEH dinaikkan.

Pengoptimuman Pengkompil untuk Pemusnah

Pengkompil MSVC mengoptimumkan kod untuk mengelakkan menjana kod pemusnah jika terdapat tiada pernyataan lontaran dalam jangka hayat objek. Pengoptimuman ini boleh ditindas dengan menggunakan pilihan penyusunan /EHa, yang diperlukan untuk menangkap semua pengecualian SEH secara konsisten.

Jenis Pengecualian SEH

SEH mempunyai banyak jenis pengecualian, termasuk yang ditakrifkan oleh sistem pengendalian dan yang digunakan oleh aplikasi tertentu. Pengecualian terurus, seperti pengecualian .NET, gunakan kod pengecualian 0xe0434f4d ("com").

__cuba, __kecuali dan __akhirnya

Untuk menangkap pengecualian SEH, __cuba digunakan bersama dengan __except, yang bertindak seperti blok tangkapan C tetapi dengan lebih banyak keupayaan. __akhirnya membenarkan kod dilaksanakan selepas pengendalian pengecualian.

Kod Contoh

Kod yang disediakan menunjukkan penggunaan __try, __except dan __akhirnya untuk menangkap kedua-dua pengecualian SEH (disebabkan oleh mengakses penuding nol) dan pengecualian C (disebabkan oleh melontar integer).

Output menunjukkan bahawa pemusnah dipanggil untuk kedua-dua pengecualian, dan __except berjaya menangkap pengecualian.

Atas ialah kandungan terperinci Apakah Tujuan dan Pelaksanaan __try dalam C pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan