実行中のJavaプログラムの異常な現象は、実行エラーと呼ばれます。彼らの性質に応じて、それは2つのカテゴリに分けることができます:エラー(エラー)と例外(例外)。彼らは共通の親クラス(また、すべての例外のトップレベルの親クラス)を持っています:スロー可能。
例外クラス構造
エラー
エラーはJVMによって生成され、処理せずに放棄されます。このようなエラーは通常、コードと実行される操作に関連しておらず、仮想マシンで比較的深刻な問題であり、プログラム自体では解決できません(一般的なエラーには、デッドループ、メモリリークなどが含まれます)。
一般的なエラーは、Java仮想マシンエラー(VirtualMachineError)です。 JVMが操作を継続するために必要なメモリリソースがなくなると、OutOfMemoryErrorが表示されます。これらの例外が発生すると、Java仮想マシン(JVM)は通常、スレッドを終了することを選択します。
例外
例外はオブジェクトとして使用され、Javaプログラムによって破棄または処理されます。通常、例外の原因は次のとおりです。コードまたは呼び出しコードが間違っており、オペレーティングシステムのリソースは利用できず、共通のランタイムライブラリが事故に遭遇します。
例外は、仮想マシン(nullポインター、範囲外の配列などのruntimeexception)によって生成されたランタイム例外と、プログラム事故(ioexceptionなど)によって引き起こされる非runtimeの例外によって分割されます。
ランタイムの例外:プログラムは、処理せずにキャプチャおよび処理または直接スローすることを選択できます。一般的なランタイムの例外には、アルゴリズムのオーバーフロー(数値式式範囲を超える)、除数はゼロ、メモリオーバーフロー、ヌルポインター、無効なパラメーターなどが含まれます。そのような例外は、プログラム自体のプログラミングエラーです。例外コードの実行方向を調整して、プログラムが正常に終了するまで実行し続けることができます。
非runtime例外:runtimeexceptionタイプの予期しない例外は、非runtimeの例外と呼ばれます。プログラム構文の観点から見ると、それらは処理する必要がある例外です。それらが処理されていない場合、プログラムをコンパイルして合格することはできません。一般的な非推定の例外には、次のようなIOExceptionが含まれます。リソースファイルが見つかりません。これは、予期しない状況に遭遇したときにプログラムが正常に実行できないことを意味します。
注:例外とエラーの違い - エクセプションはプログラム自体で処理できますが、エラーは処理できません。
チェック可能な例外であり、チェック可能な例外ではありません
Javaの例外(ErrorAndExceptions)は、プログラムをコンパイルして渡すことができるかどうかに応じて、他の2つのカテゴリに分割できます。
例外を確認できます
例外を確認できます。非償還の例外に対応すると、コンパイラはプログラムをコンパイルするときに予想されるエラーを確認できます。この例外を処理する必要があります。それに対処するには2つの方法があります。Try-Catchステートメントは例外をキャッチするか、スロー句は例外をスローする宣言を宣言し、例外タイプはメソッドのヘッダー(スロー例外を使用)の外側に宣言され、発信者は受信した例外を処理することを選択できます。
これら2つの処理方法について言えば、Java例外処理の5つのキーワードについて話す必要があります:試し、キャッチ、最後に、スロー、スロー
1。トライキャッチステートメントを使用してキャプチャを処理する(メソッドヘッダーを宣言する必要はありません)
Try、Catchの3つのステートメントブロックは、最終的には単独で表示されません。 3つを組み合わせて、トライキャッチ/トライキャッチ/トライ式/試行に組み合わせることができます。
複数のキャッチブロックがある可能性があり、現時点では、キャッチブロックコードの1つは上から下までのみ一致させることができます。
最後に、最大で1つの変数は、3つのステートメントブロックで互いにアクセスできません。
このセクションでは、Try-Catchの組み合わせを使用してチェック可能な例外を処理し、例外を上向きにスローします。例:
public xmlreaderhdu(string xmlfile){super(); this.xmlfile = xmlfile; this.filename = staticconfig.umlpathprefixhdu; try {saxreader reader = new saxreader(); document dom = reader.read(xmlfile); root = dom.getrootelement();} catch(exception e1){hander1…} catch(exception e2){hander1…}}}2。スロー句を使用してスローを宣言します(メソッドボディの外側の頭のスローをスローする例外タイプを宣言します:スローを使用して例外をスローします)
まず、メソッド本体の内側にスローを使用して例外を投げます。
次に、この方法は頭の外側で宣言され、スローを使用して内部に投げられた例外をスローします。
例1:トライキャッチは例外をスローします
public xmlreaderhdu(string xmlfile)スロー例外{super(); this.xmlfile = xmlfile; this.filename = staticconfig.umlpathprefixhdu; try {saxreader reader = new saxreader(); document dom = reader.read(xmlfile); root = dom.getrootelement();} catch(exception e1){throw new Exception(e1);}}}}}例2:スロースローカスタム例外
プライベートリスト<usecase> readucinformation()スロー例外{if(e1.hascontent()){if(e1.element( "name")。gettext()。 エラー");}}}例外を確認できません
チェック不可の例外:エラーエラーとランタイム例外runtimeexceptionを含む
ランタイムの例外は、プログラムの編集中に渡すことができます。関数が例外をスローする可能性のある静的構文を使用して検出することはできません。例外が見つかった場合のみ(つまり、ランタイム状態に応じて、ランタイム状態によって決定されます)。
処理またはディスプレイをキャプチャするか、スローされたディスプレイ(MustBecaugTordeClearedToBethrown)を選択できます。これらの例外は一般にプログラムロジックエラーによって引き起こされ、プログラムは論理的な観点からできる限りそのような例外を回避する必要があります。
要約します
上記は、この記事のJava例外に関する基本的な知識の分析に関するすべてです。私はそれがすべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!