ホームページ > バックエンド開発 > C++ > C# でネイティブ例外をキャッチして処理するにはどうすればよいですか?

C# でネイティブ例外をキャッチして処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-03 18:42:41
オリジナル
917 人が閲覧しました

How Can I Catch and Handle Native Exceptions in C#?

C# コードでのネイティブ例外のキャッチ

C# プログラミングでは、「ネイティブ」と呼ばれることが多いアンマネージ ライブラリから発生する例外をキャッチできます。例外。」これらの例外は、基になるネイティブ コードでマネージド コード内で処理できないエラーが発生した場合に発生します。

ネイティブ例外をキャッチする方法

ネイティブ例外をキャッチするには、次のことができます。 Win32Exception クラスを使用します。このクラスは、アンマネージ ライブラリによって生成されたエラー コードを含む NativeErrorCode プロパティを公開します。このプロパティを使用すると、例外を適切に処理できます。

使用例

次の例は、ネイティブ例外をキャッチし、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);
        }
    }
}
ログイン後にコピー

この例では、OpenFile() メソッドはネイティブ アプリケーションを使用してファイルを開こうとします。ファイルが見つからない場合、アクセスが拒否された場合、またはそのファイルの種類に関連付けられたアプリケーションがない場合は、ネイティブ例外がスローされます。 catch ブロックは Win32Exception クラスを使用して例外をインターセプトし、エラーの詳細を示すメッセージ ボックスを表示することで適切に処理します。

注: try...catch ブロックはネイティブ例外をキャッチします。標準の try...catch メカニズムは、マネージ例外とネイティブ例外の両方を処理するのに十分です。

以上がC# でネイティブ例外をキャッチして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート