\r\n\r\n
例外とエラー
プログラムを実行すると、予期せぬ動作が必ず発生します。これは、例外やエラーが原因である可能性があります。例外とは、通常のプログラムフローを妨げる可能性のある事象のことです。エラーとは、回復不可能と判断できる状態のことです。例外は主にアプリケーション自体に関係し、エラーはプログラムが動作しているシステムに関係します。
例外はありますか?
例外とは、プログラムの正常な流れを妨げる可能性のある事象のことです。例外という名前は、「例外事象」に由来しています。例外の発生は、例外オブジェクトを生成し、ランタイムシステムに引き渡す処理である。例外オブジェクトは、例外が発生したメソッドで生成されます。例外オブジェクトは、例外のタイプや説明などの有用な情報を含んでいます。ランタイムシステムは例外オブジェクトを受け取ると、コールスタックを逆順(メソッドが呼ばれた順)に走査して、それを処理する人を探そうとする。コールスタックは、例外を発生させたメソッドの前に呼び出されたメソッドの順序付きリストである。ランタイムシステムは、例外ハンドラを持つメソッドを見つけると成功する。例外ハンドラは、当該例外を正式に処理できるコードのブロックである。ランタイムシステムが適切なハンドラを見つけた場合(すなわち、例外の型が処理可能な型に一致した場合)、例外オブジェクトをハンドラに渡します。これを例外をキャッチするといいます。ただし、例外を処理できない場合は、プログラムが終了します。Javaでは例外は「Throwableクラス」を継承し、NullPointerExceptionとArrayIndexOutOfBoundsExceptionの2つが一般的な例外として扱われる。
ミスとは何ですか?
エラーとは、プログラムが利用可能なメモリ量より多くのメモリを必要とする場合など、回復不可能と考えられる状況のことです。これらのエラーは、実行時に処理することはできません。エラーが発生した場合、プログラムは終了します。Javaでは、エラーはThrowableクラスから継承されます。エラーは通常、プログラマ(またはアプリケーション)が捕らえようとしない深刻な問題を表しています。エラーとは、通常では起こり得ない異常な状況であり、それゆえ予見できないものです。例えば、OutOfMemoryError、stackoverflowerrror、ThreadDeadなどがその例である。メソッドはエラーハンドラを持つべきではありません。
例外とエラーの違いは何ですか?