一般的なJavaの例外処理の仕組み
例外は、プログラム内のいくつかのエラーですが、すべてのエラーは、異常と間違っ時には避けられているわけではありません。
例えば、あなたのコードより少ないセミコロンは、結果が出て実行されているヒントが間違っているでjava.lang.Error;あなたが使用している場合のSystem.out.println(11/0)を使用すると、使用しているため、あなたは除数0を行うためにこれは、スローされますjava.lang.ArithmeticException例外を。
例外発生には多くの理由がありますが、通常は次のカテゴリが含まれています。
では珍しい、主に以下の三つの理由で、Javaのを生成します。
1:Javaの内部エラーの例外が発生した異常なJava仮想マシンが生成しました。
2:エラーに書き込まれたプログラムの異常コードは、例えば、ヌル・ポインタ例外、異常な配列の境界を生成しました。この異常は未確認の異常と呼ばれ、一般的にいくつかのクラスでそれらを処理するために集中する必要があります。
3:一般的に必要な情報のメソッドの呼び出し側に通知するために使用される手動で発生する異常throw文、異常チェックとして知られる疾患は、。
他の物理的なエラーがあるので、ユーザー・エラーが原因のいずれかのこれらの異常は、いくつかの手続きのエラーが発生する原因。迅速かつ効果的にハンドラにためには、
例外を処理するためのJavaオブジェクト指向方法。異常が発生した場合メソッドの動作中に、この方法は、例外のオブジェクトを表すが生成され、およびランタイムシステムにそれを送信し、システムは、実行時例外を処理するための適切なコードを探し。
私たちは、例外オブジェクトを生成し、スロー(と呼ばれるランタイムシステムに提出投)例外。あなたがキャプチャ(として知られているプロセスであるオブジェクトの種類、見つけるまで、システムは、実行時のコールスタックの方法で例外を処理することが可能になりますキャッチ)の例外を。
Java例外は、プログラムの堅牢性とセキュリティを検討するユーザーを強制します。例外処理は、プログラムの通常の流れを制御するために使用すべきではない、その主な役割は、例外が動作し、対応する処理中に発生プログラムを捕捉することです。例外を発生する可能性のあるメソッドを処理するコードを書く、我々は、次の3つの原則に従うことができます。
現在のメソッドの宣言で使用される例外をキャッチしようとするのcatch文。
この方法は、それをカバーし、カバーされたときと同じ方法では、例外または例外サブクラスをスローする必要があります。
親クラスは複数の例外をスローする場合、オーバーライドメソッドは異例のサブセットをスローする必要がありますが、新しい例外をスローすることはできません。実行時エラーは、Javaは特殊な例外クラスを紹介します。
ここではいくつかの一般的な例外と解決策は以下のとおりです。
nullポインタ例外:NullPointerExceptionが。この例外我々は、最も一般的な異常を開発している、と次の図の結果は、例えば、実際にされたこのオブジェクトがあるブログ際に、ヌル時間は、プロパティやメソッドを呼び出すnullであるがnullポインタ例外を報告します。
いわゆるポインタが、されたJavaオブジェクトに引用しました。例えば、ストリングS;これはそのポインタです。2.いわゆるヌルポインタ、ポインタは、上記のようにヌルコンテンツであるS、SOそれが指している場合、ヌルポインタがヌルです。3.いわゆるヌル・ポインタ例外、NULLポインタへのポインタである、それは空のオブジェクトを指して、あなたはこのオブジェクトを使用できないため、あなたは、それを操作する必要があります。上記の例の場合sはヌル、使用しなければならないのは、このような方法s.equals(列X)を、それがヌルポインタ例外を生成します
nullポインタ例外ソリューションは以下のとおりです。
1:文字列リテラルとの比較
アプリケーションコードで共通の場合、リテラル文字列変数と比較されています。リテラル文字列は、文字列または列挙要素であってもよいです。私たちは、リテラルを使用することによってではなく、使用してメソッドを呼び出すメソッドを呼び出すためにnullオブジェクトを
2.メソッドのパラメータを確認
する方法を実行する前に、パラメータがあるかどうかを確認してくださいヌル。パラメータが適切にチェックされた場合、方法は継続されます。そうしないと、あなたが投げることができる、IllegalArgumentExceptionをし、着信コールの通知は、メソッドのパラメータが間違っています。
3優先使用String.valueOf()の代わりのtoString()
アプリケーションコードの文字列がオブジェクトとして記述する場合は、オブジェクトは、使用を避けるためにあるtoStringメソッドを。あなたのオブジェクト参照の場合はnullの場合、NullPointerExceptionがスローされます。逆に、静的メソッドの使用を検討String.valueOf()は、このメソッドは例外をスローすると、パラメータの関数としてない印刷ヌルの場合はNULL。
4.利用三項演算子
三項演算子は、私たちが避けるのを助けることができNullPointerExceptionが演算子は、形式は次のとおりです。
ブール式?VALUE1:VALUE2。
私たちは防ぐことができます三項演算子はNullPointerException演算子はフォームを持っている:まず、式がある場合は、ブール式を計算し、真、VALUE1はそうでない場合、返される値2が返されます。私たちは、処理するための三項演算子を使用することができ、たとえば、NULLポインタを:
文字列メッセージ=(strの== nullの)?「」:str.substring(0、10);
変数の場合、メッセージは、空になりますとstrの参照nullの場合、そうでない場合は、実際のデータにstrのポイント、メッセージを取得するのstrの前に10の文字。
5.ではなく、リターン・空を作成し、ヌル方法
非常に良い技術が代わりに返すの空のコレクションを返す方法作成することですnull値を。アプリケーションコードは、空のセットを反復処理し、そのメソッドやフィールドを使用しますが、スローしないことができNullPointerExceptionが
タイプキャスト例外:ClassCastExceptionが、このエラーは通常、プログラムに現れキャスト時にこのエラーが発生し、非常に一般的です。
クロスボーダー配列の添字:ArrayIndexOutOfBoundsExceptionが。配列の長さは、このようなマルチアレイの長さとして、それがロードできるデータの量を決定する配列からなる、4 カウント0を開始するが、コールが実際にある配列の範囲なので、誤差を超え、7。
HQLまたはSQLクエリ例外:のSQLExceptionまたはhql.ast.QuerySyntaxException。これは、HQLやあなたが書いたSQL例外SQLのか、エラーがあるHQL、デバッグを変更する必要があります。
404。間違ったパス。表示された404は、当該リクエストのパスでなければなりません、またはファイルパスが存在しません。
メモリオーバーフロー:OutOfMemoryErrorが発生。(治療サイクル)を一度にメモリにロードされたデータの少量(データロード時間を短縮する)が大きすぎるすぎる起動パラメータ(パラメータ設定サーバ起動増加)に設定されているデッドサイクル・コード、オブジェクト・セット・タイプのアプリケーションではないとされています先生によると、非常に深刻な異常によって引き起こされる回収率は(手動回復は、コレクションの対象ではない)、と述べています。米国では、システムがクラッシュすることがあるため、この爆発により、宇宙船の打ち上げを年代。