Menangkap Pengecualian Asli dalam Kod C#
Dalam pengaturcaraan C#, adalah mungkin untuk menangkap pengecualian yang berasal daripada perpustakaan yang tidak diurus, sering disebut "native pengecualian." Pengecualian ini berlaku apabila kod asli yang mendasari menghadapi ralat yang tidak boleh dikendalikan dalam kod terurus.
Cara Menangkap Pengecualian Asli
Untuk menangkap pengecualian asli, anda boleh gunakan kelas Win32Exception. Kelas ini mendedahkan sifat NativeErrorCode yang mengandungi kod ralat yang dijana oleh pustaka tidak terurus. Anda boleh menggunakan sifat ini untuk mengendalikan pengecualian dengan sewajarnya.
Contoh Penggunaan
Contoh berikut menunjukkan cara menangkap pengecualian asli dan mengendalikannya menggunakan kelas Win32Exception:
const int ERROR_FILE_NOT_FOUND = 2; const int ERROR_ACCESS_DENIED = 5; const int ERROR_NO_APP_ASSOCIATED = 1155; void OpenFile(string filePath) { Process process = new Process(); try { // Calls native application registered for the file type // This may throw a native exception process.StartInfo.FileName = filePath; process.StartInfo.Verb = "Open"; process.StartInfo.CreateNoWindow = true; process.Start(); } catch (Win32Exception e) { if (e.NativeErrorCode == ERROR_FILE_NOT_FOUND || e.NativeErrorCode == ERROR_ACCESS_DENIED || e.NativeErrorCode == ERROR_NO_APP_ASSOCIATED) { MessageBox.Show(this, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
Dalam contoh ini, kaedah OpenFile() cuba membuka fail menggunakan aplikasi asli. Jika fail tidak ditemui, akses dinafikan, atau tiada aplikasi yang dikaitkan dengan jenis fail, pengecualian asli akan dibuang. Blok tangkapan menggunakan kelas Win32Exception untuk memintas pengecualian dan mengendalikannya dengan sewajarnya dengan memaparkan kotak mesej dengan butiran ralat.
Nota: Anda tidak perlu membuat sebarang pengubahsuaian khas pada cuba...tangkap blok untuk menangkap pengecualian asli. Mekanisme percubaan standard...tangkap mencukupi untuk mengendalikan kedua-dua pengecualian terurus dan asli.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Pengecualian Asli dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!