異常な
74.スローとスローの違いは?
例外情報は、すべてのメソッドが投げることを宣言するために使用声明例外がスローされますが、処理されませんが、異常が誰治療に私を呼ぶだろう誰が、アップロードしているスローされます。そして、それがスローされた例外の特定のタイプを指し投げます。
75.最後の、最終的には、ファイナライズの違いは何ですか?
-
最終的には、クラス、変数、メソッドを変更することができ、クラスを変更するクラスを継承することができない表し、修正された方法は、メソッドをオーバーライドすることができないことを示し、修飾変数は、変数が再割り当てすることができない定数であることを示しています。
-
最終的には、コードのtry-catchブロックでの一般的な役割は、例外の扱いで、コード方式のfinallyブロック通常、我々は関係なく、例外が発生するかどうかのショーで実行する必要があります、コードブロックは、通常は閉じられたリソースの一部を格納するために使用される、実行されますコード。
-
この方法は、一般的に、我々は、ガベージコレクタの呼び出しによってシステムのGC()メソッドを呼び出す際に仕上げる、ガベージコレクタによって呼び出され、最終決定は、方法、所属Objectクラスのメソッドで、Objectクラスは、親クラスのクラスであります()、ごみを集めています。
76のtry-catch-ようやく一部が省略することができますか?
A:キャッチを省略することができます
理由:
より厳格な引数は次のとおりです、実行時例外を処理するためにのみ適してみてください+キャッチを試みる+異常な一般的な例外処理の動作のために。あなただけのキャッチ処理ではないと一般的な異常に対処しようとした場合には必須コンパイラので、それはあなたがキャプチャすることを選択した場合、表示は、更なる処理のためにキャッチして宣言する必要があり、パスをコンパイルし、一般的な異常です。実行時例外がそうコンパイル時に指定されていないので、キャッチを省略することができ、プラスキャッチあなたも理解できるコンパイラを感じます。
理論的には、任意のコードコンパイラは、私はそれが唯一のプラス、通常の操作に基づいて、皮膚の層したときに、実行時にすべてのコード、コードを追加してみてくださいそうしても、潜在的な問題がある可能性があります感じて参照するには、目に楽しいではありません。あなたがしようとするコードの一部を追加したら、コンパイラへのコミットメントを示すことではなく、処理を投げ投げられる可能性のあるコードで異常をキャプチャするために等しいです。キャプチャが、その後破棄された場合、異常とランタイム+最後にハンドル、キャッチモップまたは一緒に、更なる処理のために撮影し、例外が共通である場合には、コンパイラの要件は、さらなる処理のためにキャッチキャプチャする必要があります。
プラス最後に、例外を処理するために、「モップアップ」をキャプチャしていなかった問題があるとして、実施されるべきです。
77のtry-catch-最後に、リターンでキャッチした場合、最終的にはそれが実装されるのですか?
A:はい、実行、復帰前に実行。
コード例1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/*
* java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
*/
public
class
FinallyDemo2 {
public
static
void
main(String[] args) {
System.out.println(getInt());
}
public
static
int
getInt() {
int
a =
10
;
try
{
System.out.println(a /
0
);
a =
20
;
}
catch
(ArithmeticException e) {
a =
30
;
return
a;
/*
* return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
* 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
* 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
*/
}
finally
{
a =
40
;
}
// return a;
}
}
|
結果:30
コード例2:
com.java_02 1のためのパッケージ変更; 2 3 / * 4 * Javaのインタビューの質問- return文がキャッチした場合、最終的にはその中のコードを実行するのだろうか? * 5/ 6 {publicクラスFinallyDemo2 。7パブリック静的無効メイン(文字列[] args){ 8のSystem.out.println(のgetInt());。 。9} 10 11のgetIntパブリックstatic int型(){。 12 = 10 int型であり、 13であります{試みる 14のSystem.out.println(/ 0); 15 = 20である; 16}キャッチ(はArithmeticException E){ 17 = 30 A; 18は、リターンである 19 / *。 20 *このステップの実行に戻ります時間が、これはリターン30を返されていません。このリターンパスが形成されています。 * 21れるが、その後、それが発見された、最終的に存在します最後に、= 40のコンテンツに進みます * 22は、変数ではないリターンパスを形成した後、30を戻し、前のパスに移動し続け戻り、むしろ定数30 23である* / 24} {最後に 25 = 40; 26は、リターンであり; //もしそうなら、それはここでもそう直接リターン40、のみリターンを通して戻すため、リターンパスが形成されている } 27 28 29 //返す; 30} 31}であります
結果:40
78.一般的な例外クラスとは何ですか?
-
NullPointerExceptionが発生:アプリケーションがスローされ、空のオブジェクトにアクセスしようとします。
-
SQLException:について例外データベースアクセスエラーまたはその他のエラーメッセージを提供します。
-
例外:IndexOutOfBoundsException:ソート(例えばソートされた配列、文字列、またはベクター)を示すインデックスが範囲外の例外。
-
NumberFormatExceptionが:アプリケーションは、数値型に文字列を変換しようとしますが、文字列は適切な形式、スローされた例外に変換することができません。
-
FileNotFoundException:あなたは指定されたパス名に失敗したファイルを開こうとすると、この例外をスローします。
-
IOExceptionが:I / O例外のいくつかの種類がこの例外がスローされます。このような障害やI / O操作の中断は、一般的なクラスの例外を生成しました。
-
ClassCastExceptionが発生:オブジェクトをキャストしようとするとスローされますサブクラスのインスタンスではありません。
-
ArrayStoreExceptionが:スローされたオブジェクトへの間違った種類を保存しようとしたときに異常の配列。
-
IllegalArgumentException:メソッドに違法または不正なパラメータを渡すことを示すためにスローされます。
-
ArithmeticException:例外的な算術条件が発生した場合、スロー。例えば、整数「ゼロで除算」は、このクラスのインスタンスをスロー。
-
ないNegativeArraySizeException:アプリケーションは、負のサイズの配列を作成しようとすると、スローされます。
-
ないNoSuchMethodException:特定のメソッドがスローされ、見つけることができません。
-
SecurityExceptionが:セキュリティ違反を示すために、セキュリティマネージャによってスローされます。
-
UnsupportedOperationException:要求された操作がスローされ、サポートされていません。
-
RuntimeExceptionRuntimeException:これらの異常なスーパークラスは、Java仮想マシンの通常の処理でスローすることができます。