Rumah > pembangunan bahagian belakang > C++ > Bolehkah Standard C# cuba...tangkap Blok Mengendalikan Pengecualian Asli daripada Perpustakaan Tidak Terurus?

Bolehkah Standard C# cuba...tangkap Blok Mengendalikan Pengecualian Asli daripada Perpustakaan Tidak Terurus?

Barbara Streisand
Lepaskan: 2025-01-03 02:41:38
asal
762 orang telah melayarinya

Can Standard C# try...catch Blocks Handle Native Exceptions from Unmanaged Libraries?

Bolehkah Pengelakan Pengecualian Asli Berlaku dalam C#?

Apabila bekerja dengan perpustakaan luaran yang tidak terurus dalam C#, adalah penting untuk mempertimbangkan kemungkinan menghadapi pengecualian asli yang berasal dari dalam perpustakaan tersebut.

Boleh Standard Try...Catch Capture Native Exceptions?

Nasib baik, C# menyediakan mekanisme untuk menangkap pengecualian asli juga. Persoalannya ialah: Bolehkah standard cuba...catch block mengendalikan pengecualian tidak terurus ini tanpa sebarang pengubahsuaian?

Jawapan: Menangkap Pengecualian Asli

Untuk menangkap pengecualian asli, anda boleh gunakan kelas Win32Exception. Ia menawarkan sifat bernama NativeErrorCode yang membolehkan anda memeriksa kod ralat dan mengendalikan kes tertentu dengan sewajarnya.

Sebagai contoh, pertimbangkan coretan kod berikut:

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);
        }
    }
}
Salin selepas log masuk

Dalam contoh ini, kami cuba untuk melancarkan aplikasi asli yang dikaitkan dengan jenis fail tertentu. Jika aplikasi tidak boleh dimulakan, Win32Exception dilemparkan dengan kod ralat yang berkaitan. Pernyataan if dalam blok tangkapan menyemak kod ralat tertentu dan memaparkan mesej yang sesuai.

Atas ialah kandungan terperinci Bolehkah Standard C# cuba...tangkap Blok Mengendalikan Pengecualian Asli daripada Perpustakaan Tidak Terurus?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan