Javaの書かれたインタビュー(6)例外処理
最終的には1.コードが実行されますか?
問題の説明:試し{} return文があり、その後、試してみるの背面のコードは、最終的には{}を実行するかどうか?もしそうならば、リターンは、リターンの前または後にありますか?
public class Test {
public static int testFinally(){
try{
return 1;
}catch(Exception e){
return 0;
}finally{
System.out.println("execute finally");
}
}
public static void main(String[] args) {
System.out.println(testFinally());
}
}
業績:
最後に実行
1
DESCRIPTION最後に{}コードが実行され、return文の試み{}の前に実行されます。
//在finally代码块中加入return
public class Test {
public static int testFinally(){
try{
return 1;
}catch(Exception e){
return 0;
}finally{
System.out.println("execute finally");
return 3;
}
}
public static void main(String[] args) {
System.out.println(testFinally());
}
}
業績:
最後に実行
3
説明書は最終的に{}のリターンを持っている場合は、上書きする{}の復帰をしようとします。
最後のブロックになるではない実装。
- 試しに入る前に異常なプログラム{}
- 最後に試して{}終了を余儀なくされたプログラムのコードを実行しません。
public class Test { public static int testFinally(){ try{ System.out.println("try block"); System.exit(0); }catch(Exception e){ System.out.println("catch block"); }finally{ System.out.println("finally block"); } } public static void main(String[] args) { System.out.println(testFinally()); } }
業績:
トライブロック
例は、このように最終的に{}のコードが実行されない、その結果、プログラムを終了するように強制に試みではSystem.exit(0){}を呼び出します。
2.優れたレビュー
Javaの標準ライブラリには、トップの親としてこれらのクラスのThrowableへのいくつかの一般的な例外を構築しました。
Throwableのは、出生Errorクラスと例外クラスを送りました。
エラー:間違ったJVM自体を表すエラー・クラスとそのサブクラスのインスタンス、。エラーコードプログラマ、エラーまれて処理することはできません。そのため、プログラマは分岐例外クラスの親クラスの異常の多様に焦点を当てるべきです。
異常:例外に大きな列 のJava書かれたインタビュー(6)例外処理とそのサブクラスは、望ましくないさまざまなランタイムイベントの代わりに送信します。Javaの例外処理メカニズムで使用できる例外処理の中核です。
非異常(unckecked例外):エラーとのRuntimeException、およびそのサブクラス。コンパイル時のjavac、および、そのような異常を発見するように要求されていないが、プログラムでこれらの例外を処理する必要はありません。あなたが好きなのであれば、私たちは、この例外が処理されない場合があります(最後に...利用ください... catch)処理するコードを書くことができます。これらの例外のために、我々はむしろ例外ハンドラによってよりも、コードを修正する必要があります。この理由は、異常主に発生した問題のコードを記述します。ゼロはArithmeticException、キャストエラーエラーClassCastExceptionが、同様にNULLオブジェクトNullPointerExceptionが使用して、アレイは、ArrayIndexOutOfBoundsExceptionオーバーインデックスによる除算。
異常(チェック例外):のRuntimeExceptionとエラーのその他の異常に加えて。予備異常な処理を行うために、このようなプログラマのための必須javacは(...キャッチを試みを使用して...最終的またはスロー)。それとのtry-catch文との契約でどちらかの取得プロセスで、または宣言するために、throws節でそれを投げ、そうでない場合、コンパイラは渡しません。異常通常はプログラムの動作環境によって提供されこれが原因。プログラムは、未知のさまざまな環境で実行できるため、プログラマが介入し、どのようにプログラマは、このような異常時のために準備する必要がありますので、ユーザーは、彼によって用意されたプログラムを使用することはできません。SQLException、IOExceptionが、同様にClassNotFoundExceptionとして。
注意:
- ときに異常キャプチャ、最初のサブカテゴリーをキャプチャして、親クラスの例外情報をキャッチ。
- 例外は、例外処理をキャッチし、同時に、できるだけ早くとしてスローされます。
- 限り、あなたは例外を継承することができるよう、実際のニーズのカスタム例外の種類によります。
- ハンドルに、例外処理は、スローを扱うことができません。
3.スロー和スロー
例外をスロー手動で投げます。throw文の後ろに例外オブジェクトです。
フォーマットはスロー新しい新しい例外();
メソッドは声明の中で例外をスローすることがスローされます。(メソッドステートメントで使用する場合、メソッドが例外をスローする場合がありますことを示します)
フォーマット:
公共ボイドFは()} {IOExceptionがスロー
比較:
1、方法の最初の機能は、発生スロー;およびそれらの機能に現れる投げます。
、例外がスローされ投げることがスローされた例外オブジェクトのいくつかの種類を実行する必要がスロー;、スロー2が異常の可能性が、必ずしもこれらの異常が発生していないを表します。
ハンドル例外(ここでは負のは、このように悪いことではありません)に陰性であり、または多分ちょうど異常な機能によって、例外を投げる投げるが、異常な機能に対処するためではない、本物どちらも3、ユーバープロセス。