2020 年の新しい Java 面接の質問 - 例外

王林
リリース: 2020-06-17 17:12:27
転載
2768 人が閲覧しました

2020 年の新しい Java 面接の質問 - 例外

1. 投げる と 投げる はどう違いますか?

throws は、メソッドがスローする可能性のあるすべての例外情報を宣言するために使用されます。throws は、例外を宣言しますが、処理はしません。代わりに、例外をアップロードし、呼び出した人に処理させます。スローとは、スローされる特定の例外タイプを指します。

2.final、finally、finalize の違いは何ですか?

final はクラス、変数、メソッドを変更できます。変更されたクラスはクラスが継承できないことを意味し、変更されたメソッドはメソッドをオーバーライドできないことを意味し、変更された変数は変数が定数であることを意味します。再割り当てはできません。

finally は通常、try-catch コード ブロックで使用されます。例外を処理するときは、通常、実行する必要があるコード メソッドをfinally コード ブロックに置きます。つまり、コード ブロックは、コード ブロックが実行されるかどうかに関係なく実行されます。通常、リソースを閉じるためのコードを格納するために使用されます。

(ビデオ チュートリアルの推奨: java ビデオ チュートリアル)

finalize は Object クラスに属するメソッドであり、Object クラスはすべてのクラスの親クラスです。このメソッドは通常、ガベージ コレクターによって呼び出されます。システムの gc() メソッドを呼び出すと、ガベージ コレクターは、finalize() を呼び出してガベージを収集します。

3. try-catch-finally のどの部分を省略できますか?

回答: catch は省略できます

理由:

より厳密なステートメントは次のとおりです。try はランタイム例外の処理にのみ適しており、try catch はランタイム例外の処理に適しています。実行時例外 例外 通常の例外。つまり、catch を使用せずに try だけを使用して通常の例外を処理すると、コンパイルは成功しません。これは、通常の例外をキャッチすることを選択した場合は、その後の処理のために catch を使用してそれらの例外を明示的に宣言する必要があるとコンパイラが厳密に規定しているためです。コンパイル時の実行時例外に対するそのような規定はないため、catch は省略できます。catch コンパイラを追加しても問題はありません。

理論的には、コンパイラはどのコードにも不満を抱き、潜在的な問題がある可能性があると判断するため、すべてのコードに try を追加したとしても、コードは実行時にのみ正常に実行されます。スキンのレイヤーを追加します。ただし、コードに try を追加すると、このコードによってスローされる可能性のある例外を上向きにスローするのではなく、キャッチすることをコンパイラーに明示的に約束することになります。それが通常の例外の場合、コンパイラは、その後の処理のために catch でキャッチする必要があることを要求します。これがランタイム例外の場合、キャッチされてから破棄され、最終的にクリーンアップされるか、さらなる処理のために catch が追加されます。

最後に追加するのは、例外をキャッチしたかどうかに関係なく実行する必要がある「クリーンアップ」プロセスです。

(推奨される関連チュートリアル: java 入門プログラム )

4. try-catch-finally では、catch で戻りが行われた場合でも、finally は引き続き返されます。処刑された??

回答: 戻る前に実行されます。

コード例 1:

 
/*
 * 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:

 
package com.java_02;
 
/*
 * 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; //如果这样,就又重新形成了一条返回路径,由于只能通过1个return返回,所以这里直接返回40
        }
 
//      return a;
    }
}
ログイン後にコピー

実行結果: 40

# #5. 一般的な例外の種類は何ですか?

  • NullPointerException: この例外は、アプリケーションが null オブジェクトにアクセスしようとするとスローされます。

  • SQLException: データベース アクセス エラーまたはその他のエラーに関する情報を提供する例外。

  • IndexOutOfBoundsException: 並べ替えインデックス (配列、文字列、ベクトルの並べ替えなど) が範囲外であることを示す場合にスローされます。

  • NumberFormatException: この例外は、アプリケーションが文字列を数値型に変換しようとしたが、文字列を適切な形式に変換できない場合にスローされます。

  • FileNotFoundException: この例外は、指定されたパス名で表されるファイルを開こうとして失敗した場合にスローされます。

  • IOException: この例外は、何らかの I/O 例外が発生したときにスローされます。このクラスは、失敗した I/O 操作または中断された I/O 操作によって生成される例外の一般クラスです。

  • ClassCastException: この例外は、インスタンスではないサブクラスにオブジェクトをキャストしようとするとスローされます。

  • ArrayStoreException: 間違った型のオブジェクトをオブジェクト配列に格納しようとすると例外がスローされました。

  • IllegalArgumentException: 不正または不正なパラメーターがメソッドに渡されたことを示す例外。

  • ArithmeticException: この例外は、異常な動作条件が発生した場合にスローされます。たとえば、整数が「ゼロで除算」されると、このクラスのインスタンスがスローされます。

  • NegativeArraySizeException: この例外は、アプリケーションが負のサイズの配列を作成しようとした場合にスローされます。

  • NoSuchMethodException: この例外は、特定のメソッドが見つからない場合にスローされます。

  • SecurityException: セキュリティ違反を示すためにセキュリティ マネージャーによってスローされた例外。

  • UnsupportedOperationException: この例外は、要求された操作がサポートされていない場合にスローされます。

  • RuntimeExceptionRuntimeException: Java 仮想マシンの通常の操作中にスローされる可能性のある例外のスーパー クラスです。

面接の質問について詳しく知りたい場合は、Java の面接の質問をご覧ください。

以上が2020 年の新しい Java 面接の質問 - 例外の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!