Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Pengecualian Asli dalam C# Apabila Berinteraksi dengan Perpustakaan Tidak Terurus?

Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Pengecualian Asli dalam C# Apabila Berinteraksi dengan Perpustakaan Tidak Terurus?

Barbara Streisand
Barbara Streisandasal
2025-01-01 10:23:11293semak imbas

How Can I Catch and Handle Native Exceptions in C# When Interacting with Unmanaged Libraries?

Mengendalikan Pengecualian Asli dalam Kod C#

Adakah Kemungkinan untuk Menangkap Pengecualian Tidak Terurus?

Apabila menggunakan perpustakaan tidak terurus, anda mungkin menghadapi pengecualian asli. Pengecualian ini berasal daripada kod asas dan berbeza daripada pengecualian yang dilemparkan oleh .NET Framework.

Menangkap Pengecualian Asli

Anda sememangnya boleh menangkap pengecualian asli dalam kod C# menggunakan kelas Win32Exception. Kelas ini menyediakan maklumat tambahan tentang pengecualian, termasuk kod ralat aslinya melalui sifat NativeErrorCode.

Mengendalikan Pengecualian Asli

Untuk mengendalikan pengecualian asli dengan berkesan, anda boleh menggunakan try...catch block seperti 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
    {
        // Attempt to open the file using a native application
        process.StartInfo.FileName = filePath;
        process.StartInfo.Verb = "Open";
        process.StartInfo.CreateNoWindow = true;
        process.Start();
    }
    catch (Win32Exception e)
    {
        // Handle specific native error codes
        switch (e.NativeErrorCode)
        {
            case ERROR_FILE_NOT_FOUND:
            case ERROR_ACCESS_DENIED:
            case ERROR_NO_APP_ASSOCIATED:
                MessageBox.Show(this, e.Message, "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Exclamation);
                break;
        }
    }
}

Contoh ini mengendalikan kod ralat asli biasa apabila cuba membuka fail dan memaparkan mesej ralat yang sesuai kepada pengguna.

Nota

Untuk pengendalian pengecualian menyeluruh, adalah penting untuk merujuk dokumentasi pustaka tidak terurus khusus yang anda gunakan untuk menentukan kemungkinan ralat asli yang mungkin berlaku.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Pengecualian Asli dalam C# Apabila Berinteraksi dengan Perpustakaan Tidak Terurus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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