コンピューター, プログラミング
ジャワ:例外とその取り扱い
任意のプログラムは、ソースコードをデバッグされている場合にのみ安定して動作し、不測の事態を引き起こす可能性があります何の条件はありません。 可能性の障害をキャッチするプロセスは、プログラミングステージ上で行われます。 これを行うには、開発者がすべての期待される成果を考慮に入れて、それはプログラムの動作を妨げる、またはその崩壊につながることができなかったように、誤差の影響を制限しようとします。
あなたは、例外処理が必要になる場合があります場合には
Javaでは、例外が誤ったユーザー入力、リソースまたは突然のネットワーク切断プログラムは必要ありませんが原因で発生することができます。 アプリケーション開発者によって作成された快適な使用のためには、緊急事態の発生を制御する必要があります。 消費者は、アプリケーションを終了するのを待つ必要はありません未処理の例外の結果として、データを失うこと、またはメッセージのほんの一部には、何かが間違っていたことを示す表示されます。
Javaの例外の処理
何を検討するには? Java言語は、独自の組み込みの例外処理機能を備えています。 もちろん、エラーの大部分は、他のコンパイル段階でキャッチされ、システムが自動的にそれはもはや不可能であること、使用を通知します。 しかし、実行時に発生した例外のこの種があります。 開発者はそれを予想し、それがエラーを起こさないようにコードを設計することができ、特殊な方法でそれを処理し、別のブランチにコントロールを引き渡し必要があります。
Javaでは、これは例外をキャッチするために、コンパイラによって課せられているので、一般的な問題が知られており、標準的な運動パターンを持っています。
典型的な除外
この部門 - あなたが例外を取得することが可能な最も簡単な例で、。 その単純さにもかかわらず、点で、分圧器として、エラーになり、ゼロであってもよいです。 まあ、それは可能であるならば、過去の出現を予測し、防止します。 しかし、このオプションは常に利用可能ではないので、例外をキャッチすると、「ゼロによる除算」のイベントに直接編成する必要があります。
処理エラーをインターセプトするためのJavaメカニズムは次のようになります。
- ヒープ例外オブジェクトを作成し、ならびに任意の他のさ。
- プログラムの自然経過は中断されます。
- 除外メカニズムは、コードを継続する別の方法を見つけようとしています。
- 安全なプロセッサでのプログラムの実行、仕事や復元された検索、または特別な方法で例外の実現を発生します。
エラーを作成する最も簡単な例は次のようになります。
(==ヌル)の場合
新しいNullPointerExceptionがスロー();
ここでは、変数aは、初期化時にチェックされている、すなわち、 ヌルオブジェクトへの参照かどうかではありません。 このような状況が生じ、特別な取り扱いを必要としている場合は、例外がスロー新しいNullPointerExceptionが発生によってスローされます()。
キーワードについてのいくつかの詳細
例外を扱うときに特定のアクションを参照するために、キーワードのJavaを使用する必要があることが多いです。 その5つのこのプログラミング言語:
- 試してみてください。 このキーワードをされ 、すでに満たされ、それが例外をスローすることができ、コードのセクションへの移行を意味します。 ブロック限られた中括弧{}。
- キャッチ。 これは、所望の例外タイプをインターセプトし、それを適切に処理します。
- 最後に。 このキーワードは、例外がキャッチされなかっされていない場合でも、オプションで、とにかく必要とされるコードの特定の部分を、実行するために使用されます。 tryブロックの直後に追加しました。
- スロー - あなたはどこからでもJavaの例外を作成することができます。
- スロー - メソッドシグネチャに配置されたキーワード。 これは、次のコードは、このタイプのJavaの例外を投げることができることを意味します。 彼の予想通りの方法が動作することはできません - このマークは、心に留めておく必要があり、開発者への信号となります。
試しにキャッチ
Javaの例外のリリースは、当然それは特別な方法で処理されることを前提としています。 コードセクションは、ブロックに仕切られている場合、それを行うための最も便利な方法。 どの例外が含まれていてもよいです。 このコードを実行すると、仮想マシンは、予期せぬ事態を見つける処理でステーションに重要なブロック転送制御があることを理解するであろう。
Javaコードは例外とすることができる内の特殊ブロック試み、に包まれています。 このように、彼は同じ場所ではなく、raspolzayasコードでキャッチされますいくつかの不測の事態を置きます。
次のように処理ユニットに最も一般的なコードです。
{試します
//ここで例外を発生させることができるいくつかのコードがあります
}キャッチ(Tip_isklyucheniya_1のidentifikator_1){
//ここに例外処理があり、その種類や条件に応じて、
}キャッチ(Tip_isklyucheniya_2のidentifikator_2){
//ここに例外処理があり、その種類や条件に応じて、
}
キーワードの漁獲量は、そのコードを報告し、後述のように扱われることを、例外のためにそれをスキャンし、それはそのタイプに準拠していることを提供します。 識別子は、引数としてコードブロックを処理する際に使用することができます。
遂に
それは前の章から明らかになったとして、catchブロックは、例外をキャッチし、それらを処理します。 しかし、非常に多くの場合、状況にかかわらず、彼らがミスを摘発されたかどうかの、いくつかのコードを実行する必要がどこに生じます。 このため最終的にはキーワードがあります。 ファイルやネットワーク接続を閉じて、各種カウンタの値を増加するために使用されます。
このプロットは、例外をキャッチする方法を発明し、いくつかのcatchブロックを提示します。 例えば、試しに含まれるコードは、コールドような不測の事態が発生します。 次に、コンソールは、そして«何かが?について応援するということです»«!風邪をひい»表示式になります。 これは、finallyブロックは、どのような場合に実行されます。
実際には、最終的にはそこにトリガを回避する方法。 これは、仮想マシンの完成に接続されています。 それを実装する方法を見つけ、それがインターネットのオープンスペースで可能です。
キーワードを投げます
スローは例外を生成します。 構文は次のとおりです。
新しいNewExceptionを投げます();
タイプNewException()に新しい例外が作成されます。 タイプが使用されるように、既に標準のJavaライブラリクラスに含まれており、以前に独自の生産の開発者によって定義されます。
この設計は、コールが、それを傍受することができるようにするために、tryブロック内で発生した任意の方法、の記述の一部です。
キーワードはスロー
どのようなメソッドが例外をスローしますが、適切に処理することができませんすることができ、状況の開発の過程であれば。 このため、メソッドシグネチャ内の単語をスローし、可能な例外のタイプを指定します。
このラベルは、メソッドが自分と同じ例外を処理することができないことを、クライアント開発者のための指標の一種です。 エラータイプがチェックされている場合はまた、コンパイラはそれを聞いて、明示的に強制されます。
リソースに試してみてください
Javaのバージョン7の開発者は、リソースを用いた処理のtryブロックなどの主要な技術革新を、含まれています。
使用してリソースを節約するためにシャットダウンする必要があります後に多くのオブジェクトは、Javaで作成されます。 以前は、このことを考慮に入れて、手動でこれらのインスタンスを停止しなければなりませんでした。 さて、しかし、彼らはAutoClosableインターフェースが登場しました。 それは自動的にtryブロックに配置され、すでに使用されているオブジェクトをクローズするのに役立ちます。 このアプローチを通じて、その読みやすさが大幅に増加している中でコードを書くために、より便利になってきています。
自分のクラスのJavaの例外
説明プログラミング言語の作成者は、アカウントに緊急事態の設計タイプの多くの側面を取りました。 しかし、オプションのすべてのJavaで独自の例外を定義する機能を実装して、イベントの結果は動作しません防ぐためには、それが特定のコードのニーズに適切です。
作成する最も簡単な方法 - オブジェクトコンテキストに最も適切な継承します。
そこでは、例外から独自の例外を定義するために使用されるクラスを継承するために起こりました。 デフォルトでは、二 - - 引数のmsg String型とMyExceptionでは2つのコンストラクタを持っています。
次いで、署名を含む公共教室FullConstructors実装方法FにMyExceptionスロー。 このキーワードは、fはJavaのMyException例外のように投げることができることを意味します。 さらに、メソッド本体にスローすることによって、コンソール自体と実際の発生MyExceptionにテキスト情報の出力を生成しました。
第二の方法は、あなたが例外を作成するとき、それはキャッチでコンソールに反映されます文字列パラメータを、渡された最初のものとは若干異なっています。 メインでは、F()とg()はトライチェックに配置されており、キーワードキャッチMyExceptionを捕捉するように構成されていることは明らかです。 処理の結果は、コンソールにエラーメッセージを表示することです。
したがって、それは彼自身の手によって、Javaの例外を追加するようになりました。
アーキテクチャの例外
Javaでのすべてのオブジェクトと同じように、例外も継承され、階層構造を持っています。 このプログラミング言語でスローされたすべてのエラーのルート要素は、java.lang.Throwableクラスです。 エラーと例外 - 2種類の彼から継承されます。
エラー - 重大なエラーを通知し、未確認のJavaの例外です。 傍受ほとんどの場合において、このようなデータの処理は、設計段階ではなく、最終的なアプリケーション・コードに導入する必要性で起こります。
例外を作成し、分析するための最も一般的に使用されるクラスは例外です。 これは、今度は、RuntimeExceptionを含むいくつかの枝に分割されます。 RuntimeExceptionによりプログラム中に発生する、つまり、実行時例外です。 そこから派生したすべてのクラスは検証不可能です。
多くの場合、例外があります
Java例外では、リストは、あなたが詳細にそれらのそれぞれを記述する必要がありますので、最も頻繁に使用され、以下の通りです。
- ArithmeticException。 これらは、算術演算に関連する誤差を含みます。 最も明白な例 - ゼロによる除算。
- ArrayIndexOutOfBoundsException - その長さの合計を超えている配列番号をアピール。
- ArrayStoreExceptionが - 配列の互換性のない素子タイプを割り当てることを試みます。
- ClassCastException - 別に間違った1種類を持参しようとする試み。
- 例外:IllegalArgumentException - メソッドの呼び出しで間違った引数を使用して。
- ないNegativeArraySizeException - あなたが負のサイズの配列を作成する例外。
- NullPointerExceptionが発生 - ヌルへの参照の誤用。
- NumberFormatExceptionが - 間違った文字列変換を整数にするときに発生します。
- UnsupportedOperationException - 操作がサポートされていません。
これらの例は、未チェックのJava例外の型を表します。 しかし、これにチェックを見て:
- ClassNotFoundExceptionが - クラスが見つかりません。
- IllegalAcccessException - クラスへのアクセスを制限します。
- 例外:InterruptedException - フローの中断。
- ないNoSuchFieldException - 何の必須項目はありません。
例外の解釈
頻繁に遭遇する例外といえばデザインの彼らの解釈は、間違って認識されることに留意すべきです。 次の不測の事態があるかもしれない、より詳細に説明する短いリストがあります。
NullPointerExceptionが発生します。 例外がある非常に最初の場合は、NULLと等しいオブジェクトへの参照にアピールすることです。 それはまた、ゼロクラスインスタンスメソッドに及びます。 NullPointerExceptionが等しい長さヌル配列を得る場合にスローされてもよいです。 このような状況を回避するために、定期的にヌル上のサイトをチェックします。
ArrayIndexOutOfBoundsExceptionが。 任意のプログラムでは、アレイの使用なしでは存在できません。 したがって、それに頻繁に頼ることは、生成し、エラーことができます。 開発者は、インデックスリストにない配列要素にアクセスしようとするときに例外が発生します。 例えば、要求された値が長さゼロの上または下です。 非常に多くの配列にゼロのスコアから始まるという事実の結果です。
調査結果
Javaの例外の処理 - 非常にプログラマの作業を容易にし、彼はきれいで、コードエラーを欠いを作成することを可能にする強力なツール環境を、。 どのように滑らかで安定した機能のアプリケーションでは、開発者の地位と評判に依存します。
もちろん、多かれ少なかれ、単純なプログラムにはるかに簡単に異常な状況をトレースします。 しかし、千数百行のための大規模な自動化された複合体ではそれが唯一の長期的なテストとデバッグの結果として可能です。
いくつかのアプリケーションで発生し、そこからJavaの例外エラーのため、一部の企業は、彼らが愛好家を見つけるの報酬を提供します。 特に、セキュリティポリシーのソフトウェアの違反を引き起こすものにより理解。
Similar articles
Trending Now