C#のErrorとExceptionの主な違いは、Errorはシステムリソースが使用できないために発生し、Exceptionはプログラム内の問題によって発生することである。
C#ではErrorとExceptionの間に明確な違いがありますが、人々はこの2つの用語を互換的に使用することがよくあります。
エラーは、必要なシステムリソースが存在しないために発生する状況です。
例外は、プログラムに問題があるために発生する状況です。
全体として、エラーは回復不可能であり、例外は回復可能である。
C#のエラーとは
エラーとは、システムリソースが使用できないために発生する状況です。
エラーは複雑な障害であり、プログラマは自分のプログラムでは処理できない。
したがって、エラーは回復不可能である。
コンパイラはその発生を知らないので、未チェック型です。
したがって、エラーは実行時に発生する。
メモリ不足エラー、スタックオーバーフローエラー、システムクラッシュエラーなどはよくあるエラーです。
プログラマはこれらのエラーをC#のプログラムで処理できないため、プログラムが異常終了してしまう。
C#の例外とは
例外とは、プログラムの実行時に発生する問題のことです。
C#のプログラムに問題があるために例外が発生することがありますが、回復することが可能です。
数字をゼロで割るのは例外の一例です。
C#のプログラムでは、tryブロック、catchブロック、finallyブロックを使って例外を処理します。
例外が発生しそうなコードはtryブロックの中に置くことができる。
例外が発生した場合は、catchブロックの中のステートメントを実行する。
finallyブロックは、例外が発生したかどうかにかかわらず実行される。
プログラマはfinallyブロックの中にファイルクローズなどの操作を入れることができる。
また、finallyブロックは必ず必要というわけではありません。
例外には、チェックされる例外とチェックされない例外の2種類があります。
チェックされた例外は、コンパイラが知っています。
一方、チェックされない例外については、コンパイラは知らない。
図1: 例外を含むC#プログラム
上の図は、例外を発生させたプログラムです。
変数aは値10で、bは値0です。
aをbで割ると例外が発生します。
そこで、catchブロックが実行され、例外が表示されます。
最後にfinallyブロックが実行されます。
C#のエラーと例外の違い
定義
エラーは、システムリソースの不足によって発生する予期せぬ状態を示すものであり、例外は、プログラムの正常なフローを妨げるプログラム内の問題です。
このように、C#におけるErrorとExceptionの主な違いは以下の通りです。
発生状況
また、エラーはシステムリソースの不足により発生し、例外はプログラムの問題により発生します。
回復
C#のErrorとExceptionのもう一つの違いは、Recoveryです。
エラーは回復不可能であるが、例外は回復可能である。
ハンドリング
また、プログラムを用いてエラーを処理する方法はありません。
しかし、try, catch, finallyなどのキーワードを使って、プログラム内で例外を処理することは可能です。
分類
エラーはアンチェック型に分類されるのに対し、例外はチェック型とアンチェック型に分類される。
これが、C#におけるエラーと例外のもう一つの違いです。
例
エラーには OutOfMemoryError, StackOverFlowError, IOError などがあり、例外には ArithmeticException, SQLException, NullPointerException などがあります。
これもC#のErrorとExceptionの違いです。
結論
C#のErrorとExceptionの主な違いは、Errorはシステムリソースが使用できないために発生し、Exceptionはプログラム内の問題によって発生することである。
簡単に言うと、エラーはC#のプログラムでは処理できない危機的な状況であり、例外はC#のプログラムでは処理できる例外的な状況です。