私は、C++/Win32 開発環境から C#/.NET に移行しようとしている人です。私が気づいたことの 1 つは、C++/Win32 ではエラー コードとその伝播を使用して、ほとんどのエラー状態が処理されることです。
反対に、C#/.NET のほとんどの誤った状態は、例外を使用して処理されるようであり、エラー コードの使用はほとんど推奨されません。
なんでそうなの?
私は、C++/Win32 開発環境から C#/.NET に移行しようとしている人です。私が気づいたことの 1 つは、C++/Win32 ではエラー コードとその伝播を使用して、ほとんどのエラー状態が処理されることです。
反対に、C#/.NET のほとんどの誤った状態は、例外を使用して処理されるようであり、エラー コードの使用はほとんど推奨されません。
なんでそうなの?
エラーコードの主な問題は、エラーコードをチェックする必要があることです。いつも。
そして、私たちは人間であり、忘れることができます。
これは、エラーコードのチェックを忘れるだけで、プログラムが一貫性のない状態になる可能性があることを意味します。
ただし、例外の処理を忘れると、プログラムは終了します。
これは、一貫性のない状態で実行し続けるよりも好ましいと見なされます。
エラーコードがC/C ++コードでまだ普及している理由の多くは歴史的なものです。これらの言語には例外処理がなかったため、エラーコードが必要でした。そして、このイディオムに準拠するライブラリやコードはたくさんあるので、プログラマーはそれを維持する必要があります。
例外を無視できないという事実以外に、例外を使用する理由は他にもあります。Marcが観察したように、例外のタイプを超えて、スタックトレース、メッセージなど、非常に多くのコンテキストがあります。
私が言う主な理由の1つは、エラーコードがプラットフォーム固有であるということです。.NETは、もともとポータブルになるように設計されました。
たとえば、aFileNotFoundException
は、実行しているプラットフォームによって異なる可能性のあるあいまいな数値よりも普遍的です。