トップ30の例外処理面接の質問と回答[新入生と経験者向け]

公開: 2020-09-29

例外処理は、プログラムの通常のフローを混乱させる可能性のある実行時エラーを処理するためにアルゴリズムに実装される概念です。 この概念を使用して処理できるエラーのいくつかは次のとおりです。

  • ClassNotFoundException
  • IOException
  • SQLException
  • RemoteException
  • RuntimeException:
    • ArithmeticException
    • NullPointerException
    • NumberFormatException
    • IndexOutOfBoundsException
      • ArrayIndexOutOfBoundsException
      • StringIndexOutOfBoundsException

この実装のメリットは、プログラムの実行中に例外が発生した場合にプログラムがクラッシュするのを防ぐことです。 例外処理がないと、プログラムは例外が発生したときにエラーをスローし、プログラムの残りの部分は実行されません。 ただし、この概念を実装すると、発生した例外に関してプログラムの残りの部分が独立している場合に、プログラムの残りの部分が実行されるという回避策が得られます。 詳細については、データサイエンスコースをご覧ください。

読む: 30のSeleniumインタビューの質問と回答を読む必要があります:究極のガイド

例外処理面接の質問と回答

1.例外とはどういう意味ですか?

これは、プログラムの実行時に発生することがある異常な状態です。 それはプログラムの通常の流れを混乱させます。 この例外を処理する必要があります。 そうしないと、プログラムが突然終了する可能性があります。

2.Javaで例外を処理する方法を説明します。 プロセスの背後にある例外処理メカニズムは何ですか?

例外処理メカニズムには3つの部分があります。 これらは呼ばれます:

  • Tryブロック:最初に実行が試行され、発生する可能性のある例外がないか監視されるコードのセクション。
  • キャッチブロック:「try」ブロックによって例外がスローされた場合、このコードセクションによってキャッチされます。
  • 最後にブロック:このセクションのコードは、「try」ブロックでキャッチされた例外に関係なく、常に実行されます。 例外がない場合でも、このブロックの下のコードが実行されます。

3.'try'、'catch'、および'finally'ブロックの間に他のステートメントを保持することは可能ですか?

のセクションの間にステートメントを含めることはお勧めしません 'try'、'catch'、および'finally'ブロックは、例外処理メカニズムの1つのユニット全体を形成するためです。

試す

{{

//例外を監視するコード。

}

//ここにステートメントを保持することはできません

catch(例外例)

{{

// tryブロックによってスローされた例外がある場合は、それをキャッチします。

}

//ここにステートメントを保持することはできません

最後に

{{

//このブロックは、例外に関係なく常に実行されます。

}

4.「catch」および「finally」ブロックなしで「try」ブロックのみを含めることは可能ですか?

これにより、コンパイルエラーが発生します。 'try'ブロックの後には、'catch'ブロックまたは'finally'ブロックのいずれか(両方ではない場合)が続く必要があります。 例外処理のフローが中断されないようにするには、「catch」または「finally」ブロックのいずれかが必要です。

5.コントロールがfinallyブロック自体から戻ってきた場合、'finally'ブロックの後にステートメントを保持することは可能ですか?

これにより、到達不能なキャッチブロックエラーが発生します。 これは、コントロールが「finally」ブロック自体から戻るためです。 コンパイラは、例外を除いて、行の後のコードの実行に失敗します。 そのため、実行すると到達不能コードエラーが表示されます。

海外留学を夢見ていますか? これがあなたにぴったりのプログラムです

6.到達不能なキャッチブロックエラーについて説明します。

複数のキャッチブロックの場合、キャッチブロックが配置される順序は、最も具体的なものから最も一般的なものまでです。 つまり、例外のサブクラスが最初に来て、次にスーパークラスが続くはずです。 スーパークラスが最初に保持され、その後にサブクラスが続く場合、コンパイラは到達不能なキャッチブロックエラーを表示します。

パブリッククラスExceptionHandling

{{

public static void main(String [] args)

{{

試す

{{

int i = Integer.parseInt( "test");

//このステートメントはNumberFormatExceptionをスローします。//指定された入力が文字列であるのに対し、//指定された形式は整数であるためです。

}

catch(例外例)

{{

System.out.println( "このブロックはすべての例外タイプを処理します");

//このブロックは例外のスーパークラスであるため、//このブロックではすべての種類の例外を処理できます。

}

catch(NumberFormatException ex)

{{

//これによりコンパイル時エラーが発生します

//このブロックは、

//例外は上記の//catchブロックによってすでにキャッチされます

}

}

}

7.'try'ブロック内の3つのステートメント(statement1、statement2、およびstatement3)について考えます。 その後に「catch」ブロックが続き、「try」ブロックの実行中に発生した例外をキャッチします。 statement2で例外がスローされたと想定します。 statement3が実行されると思いますか?

Statement3は実行されません。 いずれかの時点で「try」ブロックによって例外がスローされた場合、例外の後の残りのコードは実行されません。 代わりに、フロー制御は直接「catch」ブロックに到達します。

8.Javaでエラーと例外を区別します。

エラーと例外の主な違いは、エラーはJVM(Java仮想マシン)が実行されている環境によって発生しますが、例外はプログラム自体によって発生することです。 たとえば、OutOfMemoryは、JVMがメモリを使い果たしたときに発生するエラーです。

ただし、NullPointerExceptionは、プログラムがnullオブジェクトにアクセスしようとしたときに発生する例外です。 エラーからの回復はできません。 したがって、エラーの唯一の解決策は、実行を終了することです。 ただし、tryブロックとcatchブロックを使用するか、呼び出し元の関数に例外をスローすることで、例外を回避することができます。

必読: Javaインタビューの質問と回答

9.例外の種類は何ですか? それらを説明します。

例外には2つのタイプがあります。

チェックされた例外

コンパイラーによって認識および認識される例外のタイプ。 これらの例外は、コンパイル時にのみチェックできます。 したがって、これらはコンパイル時例外とも呼ばれます。 これらは、tryブロックとcatchブロックを使用するか、throw句を使用して処理できます。 これらの例外が適切に処理されない場合、コンパイル時エラーが発生します。 例には、RunTimeExceptionを除くjava.lang.Exceptionのサブクラスが含まれます。

未チェックの例外

コンパイラーによって認識されない例外のタイプ。 これらは実行時にのみ発生します。 したがって、これらは実行時例外とも呼ばれます。 コンパイル時にチェックされません。 したがって、コンパイルが成功した後でも、適切に処理されないと、プログラムが途中で終了する可能性があります。 例には、java.lang.RunTimeExceptionおよびjava.lang.Errorのサブクラスが含まれます。

10. Javaの例外の階層は何ですか?

java.lang.Throwableは、Javaのすべてのエラーと例外のスーパークラスです。 このクラスは、java.lang.Objectクラスを拡張します。 catchブロックの引数は、その型またはそのサブクラス型のみである必要があります。 Throwableクラスには、次の2つのサブクラスが含まれます。

  1. java.lang.Error:これはJavaのすべてのエラータイプのスーパークラスです。 これに含まれる一般的なエラーは–
    1. java.lang.VirtualMachineError:この下–
      1. StackOverFlowError
      2. OutOfMemoryError
    2. java.lang.AssertionError
    3. java.lang.LinkageError:この下–
      1. NoClassDefFoundError
      2. IncompatibleClassChangeError
  2. java.lang.Exception:これはJavaのすべての例外タイプのスーパークラスです。 この下での一般的な例外は–
    1. RunTimeException
      1. ArithmeticException
      2. NumberFormatException
      3. NullPointerException
      4. ArrayIndexOutOfBoundsException
      5. ClassCastException
    2. java.lang.InterruptedException
    3. java.lang.IOException
    4. java.lang.SQLException
    5. java.lang.ParseException

11. Javaのランタイム例外とは何ですか? いくつか例を挙げてください。

実行時に発生する例外は、実行時例外と呼ばれます。 コンパイラは、チェックされていない例外など、これらの例外を認識できません。 これには、java.lang.RunTimeExceptionおよびjava.lang.Errorのすべてのサブクラスが含まれます。 例としては、NumberFormatException、NullPointerException、ClassCastException、ArrayIndexOutOfBoundException、StackOverflowErrorなどがあります。

12.JavaでOutOfMemoryErrorを定義します。

これは、JVMのメモリが不足したときに発生するjava.lang.Errorのサブクラスです。

13.JavaでNoClassDefFoundErrorとClassNotFoundExceptionを区別します。

NoClassDefFoundErrorとClassNotFoundExceptionはどちらも、実行時に特定のクラスが見つからない場合に発生します。 ただし、それらはさまざまなシナリオで発生します。 NoClassDefFoundErrorは、特定のクラスがコンパイル時に存在したが、実行時に欠落していたためにエラーが発生した場合です。 ClassNotFoundExceptionは、実行時にクラスパスで更新されていないクラスをロードしようとしているアプリケーションで例外が発生した場合に発生します。

14.「try」または「catch」ブロックのいずれかがコントロールを返す場合、「finally」ブロックは実行されますか?

'finally'ブロックは、tryブロックまたはcatchブロックがコントロールを返しているかどうかに関係なく、常に実行されます。

15.手動で例外をスローすることは可能ですか? はいの場合、その方法を説明してください。

手動で例外をスローすることが可能です。 これは、「throw」キーワードを使用して行われます。 例外を手動でスローするための構文は次のとおりです。

InstanceOfThrowableTypeをスローします。

'throw'キーワードを使用して、例外を手動でスローする例を次に示します。

試す

{{

NumberFormatException ex = new NumberFormatException(); //ここでは、NumberFormatExceptionのオブジェクトを明示的に作成します

元を投げる; //throwキーワードを使用してNumberFormatExceptionオブジェクトを明示的にスローします

}

catch(NumberFormatException ex)

{{

System.out.println( "このブロックでは、明示的にスローされたNumberFormatExceptionオブジェクトをキャッチできます。");

}

読む:トップ35春のインタビューの質問と回答:究極のガイド

16. Javaで例外を再スローするとはどういう意味ですか?

'try'ブロックで発生した例外は、'catch'ブロックで処理されます。 'catch'ブロックがその例外を処理できない場合、'throw'キーワードを使用して同じ例外を再スローできる可能性があります。 このメカニズムは、例外の再スローと呼ばれます。 実装は次のとおりです。

試す

{{

文字列s=null;

System.out.println(s.length()); //このステートメントはNullPointerExceptionをスローします

}

catch(NullPointerException ex)

{{

System.out.println( "ここでNullPointerExceptionがキャッチされました");

元を投げる; //NullPointerExceptionを再スローします

}

17.Javaで「throws」キーワードを使用するのはなぜですか。

メソッドが処理できなかった場合に例外をスローする可能性がある場合は、「throws」キーワードを使用してその例外を指定する必要があります。 その例外を処理する際に、そのメソッドの呼び出し元関数に役立ちます。 'throws'キーワードを使用するための構文は、

return_type method_name(parameter_list)はexception_listをスローします

{{

//コード

}

ここで、exception_listは、メソッドによってスローされる可能性のある例外のリストです。 これらの例外はコンマで区切る必要があります。 コードの例:

パブリッククラスExceptionHandling

{{

public static void main(String [] args)

{{

試す

{{

methodWithThrows();

}

catch(NullPointerException ex)

{{

System.out.println(" methodWithThrows()メソッドによってスローされたNullPointerExceptionはここでキャッチされます");

}

}

static void methodWithThrows()はNullPointerExceptionをスローします

{{

文字列s=null;

System.out.println(s.length()); //このステートメントはNullPointerExceptionをスローします

}

}

18.「finally」ブロック内のDBリソースを閉じるなど、クリーンアップ操作を継続することをお勧めします。 なぜそれが必要なのですか?

'try'ブロックで例外が発生したかどうか、または発生した例外が'catch'ブロックでキャッチされたかどうかに関係なく、'finally'ブロックは常に実行されます。 クリーンアップ操作を「finally」ブロックに保持すると、どのような場合でもこれらの操作の操作が保証され、発生する場合と発生しない場合がある例外の影響を受けません。

19. Javaで、final、finally、finalizeをどのように区別しますか?

まず、「final」は、変数、メソッド、またはクラスを変更できないようにするために使用できるキーワードです。 簡単に言うと、変数がfinalとして宣言されている場合、一度初期化されると、その値を変更することはできません。 メソッドがfinalとして宣言されている場合、サブクラスでオーバーライドまたは変更することはできません。 クラスがfinalとして宣言されている場合、それ以上のクラスに拡張することはできません。

次に、「finally」は、「try」および「catch」ブロックとともに例外処理で使用されるブロックです。 このブロックは、発生した例外に関係なく、または発生した例外が処理されるかどうかに関係なく、常に実行されます。 通常、このブロックは、データベース接続、I/Oリソースなどのリソースを閉じるためのクリーンアップ操作を実行するために使用されます。

第三に、finalize()メソッドは保護されたメソッドです。 java.lang.Objectクラスに属しています。 Javaで作成されたすべてのクラスは、このメソッドを継承します。 ガベージコレクタスレッドは、オブジェクトがメモリから削除される前にこのメソッドを呼び出します。 オブジェクトがメモリから削除される前に、このメソッドはいくつかのクリーンアップ操作を実行するために使用されます。

protected void finalize()throws Throwable

{{

//クリーンアップ操作

}

20. Javaでカスタマイズされた例外とは何ですか?

プログラムフローの要件に従って、Javaで例外クラスをスローできます。 これらの例外は、ユーザー定義の例外と呼ばれます。 これらは、カスタマイズされた例外とも呼ばれます。 これらの例外は、例外の階層内のクラスのいずれかを拡張する必要があります。

21. JavaでClassCastExceptionをどのように説明しますか?

JVMがあるタイプのオブジェクトを別のタイプにキャストできない場合、この例外が発生します。 これはRunTimeExceptionです。

22. Javaでスロー、スロー、スロー可能を区別します。

まず、キーワード「throw」を使用して、Javaで手動で例外をスローします。 このキーワードを使用すると、任意のメソッドまたはブロックから例外をスローできます。 ただし、例外はjava.lang.Throwableクラスのタイプであるか、java.lang.Throwableクラスのサブクラスの1つに属している必要があります。

次に、キーワード「throws」がJavaのメソッドシグネチャで使用されます。 メソッドが例外をスローできる場合は、このメソッドによって示されます。 上記の例外は、それぞれの呼び出し元関数によって処理されます。 これは、tryおよびcatchブロックを使用するか、throwsキーワードを使用して実行されます。

第三に、Javaのすべてのタイプのエラーと例外のスーパークラスはThrowableと呼ばれます。 これは、java.langパッケージのメンバーです。 JVMまたはthrowステートメントは、このクラスまたはそのサブクラスのインスタンスのみを発生させます。 catchブロックには、引数が1つだけ含まれている必要があり、このタイプまたはそのサブクラスである必要があります。 カスタマイズされた例外が作成された場合は、このクラスも拡張する必要があります。

23.JavaでのStackOverflowErrorについて説明します。

これは、実行時にスタックがオーバーフローしたときにJVMによってスローされるエラーです。

24.サブクラスのチェックされた例外でチェックされていない例外をスローするスーパークラスメソッドをオーバーライドすることは可能ですか?

スーパークラスメソッドがチェックされていない例外をスローした場合、同じ例外または他のチェックされていない例外を使用してサブクラスでオーバーライドされるため、これは不可能です。 ただし、チェックされた例外でオーバーライドすることはできません。

25.Javaで連鎖例外を定義します。

プログラムでは、1つの例外がドミノ効果を誘発することにより、多くの例外をスローする可能性があります。 これにより、一連の例外が発生します。 例外の実際の原因の場所を知ることは有益です。 これは、Javaの連鎖例外機能で可能です。 これは、JDK1.4以降に導入されました。 Javaで連鎖例外を実装するために、2つの新しいコンストラクターと2つの新しいメソッドがThrowableクラスに含まれています。 これらは、

Throwableクラスのコンストラクター:

    1. Throwable(Throwable cause):原因は、現在の例外を発生させる例外です。
    2. Throwable(String msg、Throwable cause):msg文字列は例外メッセージです。 現在の例外を発生させる例外がここでの原因です。

Throwableクラスのメソッド:

    1. getCause()メソッド:発生した例外の本当の原因は、このメソッドによって返されます。
    2. initCause(Throwable cause)メソッド:呼び出し元の例外の原因は、このメソッドによって設定されます。

26. Javaのすべてのタイプのエラーと例外のスーパークラスとして定義されているクラスはどれですか?

すべてのタイプのエラーと例外のスーパークラスは、Javaのjava.lang.Throwableです。

27. try、catch、finallyブロックの正しい組み合わせとして何を分類できますか?

tryとcatchブロックの組み合わせ。

試す

{{

//ブロックを試す

}

catch(例外例)

{{

//ブロックをキャッチ

}

tryとfinallyブロックの組み合わせ。

試す

{{

//ブロックを試す

}

最後に

{{

//最後にブロックします

}

3つすべての組み合わせ:try、block、finallyblocks。

試す

{{

//ブロックを試す

}

catch(例外例)

{{

//ブロックをキャッチ

}

最後に

{{

//最後にブロックします

}

28.なぜprintStackTrace()メソッドを使用するのですか?

このメソッドは、発生した例外に関する詳細情報を出力するために使用されます。

29.チェックされた例外の例をいくつか挙げてください。

チェックされた例外の例には、ClassNotFoundException、SQLException、およびIOExceptionが含まれます。

30.チェックされていない例外の例をいくつか挙げてください。

チェックされていない例外の例としては、NullPointerException、ArrayIndexOutOfBoundsException、NumberFormatExceptionなどがあります。

また読む:新入生と経験者のための47のOOPSインタビューの質問と回答を読む必要があります

まとめ

ビッグデータについて詳しく知りたい場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のPGディプロマをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および課題、IIITを提供します。 -B卒業生のステータス、実践的なキャップストーンプロジェクト、トップ企業との雇用支援。

データサイエンスの学習に興味があり、この分野でのキャリアを選択する場合は、データサイエンスのIIIT-B&upGradのエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップを提供します。 、業界の専門家とのメンターシップ、業界のメンターとの1対1、400時間以上の学習とトップ企業との仕事の支援。

未来のキャリアに備える

データサイエンスの理学修士に申し込む