最も一般的なJavaの面接の質問と回答の概要(6)

異常な

74.スローとスローの違いは?

例外情報は、すべてのメソッドが投げることを宣言するために使用声明例外がスローされますが、処理されませんが、異常が誰治療に私を呼ぶだろう誰が、アップロードしているスローされます。そして、それがスローされた例外の特定のタイプを指し投げます。

 

75.最後の、最終的には、ファイナライズの違いは何ですか?

  • 最終的には、クラス、変数、メソッドを変更することができ、クラスを変更するクラスを継承することができない表し、修正された方法は、メソッドをオーバーライドすることができないことを示し、修飾変数は、変数が再割り当てすることができない定数であることを示しています。

  • 最終的には、コードのtry-catchブロックでの一般的な役割は、例外の扱いで、コード方式のfinallyブロック通常、我々は関係なく、例外が発生するかどうかのショーで実行する必要があります、コードブロックは、通常は閉じられたリソースの一部を格納するために使用される、実行されますコード。

  • この方法は、一般的に、我々は、ガベージコレクタの呼び出しによってシステムのGC()メソッドを呼び出す際に仕上げる、ガベージコレクタによって呼び出され、最終決定は、方法、所属Objectクラスのメソッドで、Objectクラスは、親クラスのクラスであります()、ごみを集めています。 

 

76のtry-catch-ようやく一部が省略することができますか?

A:キャッチを省略することができます

理由:

より厳格な引数は次のとおりです、実行時例外を処理するためにのみ適してみてください+キャッチを試みる+異常な一般的な例外処理の動作のために。あなただけのキャッチ処理ではないと一般的な異常に対処しようとした場合には必須コンパイラので、それはあなたがキャプチャすることを選択した場合、表示は、更なる処理のためにキャッチして宣言する必要があり、パスをコンパイルし、一般的な異常です。実行時例外がそうコンパイル時に指定されていないので、キャッチを省略することができ、プラスキャッチあなたも理解できるコンパイラを感じます。

理論的には、任意のコードコンパイラは、私はそれが唯一のプラス、通常の操作に基づいて、皮膚の層したときに、実行時にすべてのコード、コードを追加してみてくださいそうしても、潜在的な問題がある可能性があります感じて参照するには、目に楽しいではありません。あなたがしようとするコードの一部を追加したら、コンパイラへのコミットメントを示すことではなく、処理を投げ投げられる可能性のあるコードで異常をキャプチャするために等しいです。キャプチャが、その後破棄された場合、異常とランタイム+最後にハンドル、キャッチモップまたは一緒に、更なる処理のために撮影し、例外が共通である場合には、コンパイラの要件は、さらなる処理のためにキャッチキャプチャする必要があります。

プラス最後に、例外を処理するために、「モップアップ」をキャプチャしていなかった問題があるとして、実施されるべきです。

 

77のtry-catch-最後に、リターンでキャッチした場合、最終的にはそれが実装されるのですか?

A:はい、実行、復帰前に実行。

コード例1:

/ * 
 * Javaのインタビューの質問- return文がキャッチした場合、最終的にはその中のコードを実行するのだろうか?
 * / 
パブリッククラスFinallyDemo2 { 
    パブリック静的無効メイン(文字列[] args){ 
        System.out.printlnは(のgetInt()); 
    } 

    のgetInt int型のpublic static(){ 
        int型A = 10; 
        試み{ 
            System.out.printlnは(A / 0); 
            ; = 20 
        }キャッチ(はArithmeticException E){ 
            ; A = 30 
            返す; 
            / * 
             *場合は、このステップのプログラムの実行に戻り、これはリターン30を返していない、この戻り経路が形成されています
             *その後、最終的にそこに戻っていることが判明したので、内容最後に進んでA = 40 
        }最後に{ 
            A = 40。
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             * / 
        } 

を返す//; 
    } 
}

結果:30

コード例2:

1つ のためのパッケージ変更com.java_02;
 2  
3  / * 
4  * Javaのインタビューの質問- return文がキャッチした場合、最終的にはその中のコードを実行するのだろうか?
5   * / 
6  パブリック クラスFinallyDemo2 {
 7。     パブリック 静的 ボイドメイン(文字列[]引数){
 8。         のSystem.out.println(のgetInt());
 9      }
 10  
。11      公共 静的 INT のgetInt(){
 12で         のint A = 10 ;
 13れます         トライ{
 14              のSystem.out.println(/ 0 );
 15              A = 20であります;
 16          } キャッチ(はArithmeticException E){
 17。              A = 30 ;
 18である             返す;
 19              / * 
20は、              この戻り経路が形成されている; *このステップのプログラムの実行に戻り、これはリターン30返されていない場合
 21               *しかし、その後、A = 40が最終的に戻っているので、最終的に継続するコンテンツであることが判明した
 22               *再び以前のパスへとリターンパスを形成した後、30を返しに行くし続け、ここではない変数は、一方で、です定数30である
 23である              * / 
24          } 最後に{
 25              = 40 ;
 26はある             返す ; // もしそうであれば、再びここでの唯一のリターンを介して戻すため、リターンパスを形成するので、直接リターン40 
27         }
28 
29 //      return a;
30     }
31 }

执行结果:40

 

78. 常见的异常类有哪些?

  • NullPointerException:当应用程序试图访问空对象时,则抛出该异常。

  • SQLException:提供关于数据库访问错误或其他错误信息的异常。

  • IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 

  • NumberFormatException:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

  • FileNotFoundException:当试图打开指定路径名表示的文件失败时,抛出此异常。

  • IOException:当发生某种I/O异常时,抛出此异常。此类是失败或中断的I/O操作生成的异常的通用类。

  • ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出该异常。

  • ArrayStoreException:试图将错误类型的对象存储到一个对象数组时抛出的异常。

  • IllegalArgumentException:抛出的异常表明向方法传递了一个不合法或不正确的参数。

  • ArithmeticException:当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。 

  • NegativeArraySizeException:如果应用程序试图创建大小为负的数组,则抛出该异常。

  • NoSuchMethodException:无法找到某一特定方法时,抛出该异常。

  • SecurityException:由安全管理器抛出的异常,指示存在安全侵犯。

  • UnsupportedOperationException:当不支持请求的操作时,抛出该异常。

  • RuntimeExceptionRuntimeException:これらの異常なスーパークラスは、Java仮想マシンの通常の処理でスローすることができます。

おすすめ

転載: www.cnblogs.com/java1024/p/11422323.html