Sail E0 Webinar

MCQs

Total Questions : 61 | Page 3 of 7 pages
Question 21. Predict the output:
public class Test{
public static void main(String args[]){
try{
String arr[] = new String[10];
arr = null;
arr[0] = "one";
System.out.print(arr[0]);
}catch(Exception ex){
System.out.print("exception");
}catch(NullPointerException nex){
System.out.print("null pointer exception");
}
}
}
  1.    "one" is printed.
  2.    "exception" is printed.
  3.    "null pointer exception" is printed.
  4.    Compilation fails saying NullPointerException has already been caught.
  5.    None of these
 Discuss Question
Answer: Option D. -> Compilation fails saying NullPointerException has already been caught.
Question 22. Given the code. What is the result when this program is executed?
public class Test{
static int x[];
static{
x[0] = 1;
}
public static void main(String args[]){
}
}
  1.    ArrayIndexOutOfBoundsException is thrown
  2.    ExceptionInInitializerError is thrown
  3.    IllegalStateException is thrown
  4.    StackOverflowException is thrown
  5.    None of these
 Discuss Question
Answer: Option B. -> ExceptionInInitializerError is thrown
Question 23. What will be the result if NullPointerException occurs at line 2?
1. try{
2. //some code goes here
3. }
4. catch(NullPointerException ne){
5. System.out.print("1 ");
6. }
7. catch(RuntimeException re){
8. System.out.print("2 ");
9. }
10. finally{
11. System.out.print("3");
12. }
  1.    1
  2.    3
  3.    2 3
  4.    1 3
  5.    1 2 3
 Discuss Question
Answer: Option D. -> 1 3
Question 24. What will be the result after the class Test execution?
class A{
public void doA(){
B b = new B();
b.dobB();
System.out.print("doA");
}
}
class B{
public void dobB(){
C c = new C();
c.doC();
System.out.print("doB");
}
}
class C{
public void doC(){
if(true)
throw new NullPointerException();
System.out.print("doC");
}
}
public class Test{
public static void main(String args[]){
try{
A a = new A();
a.doA();
}catch(Exception ex){
System.out.print("error");
}
}
}
  1.    "doCdoBdoA" is printed
  2.    "doAdoBdoC" is printed
  3.    "doBdoAerror" is printed
  4.    "error" is printed
  5.    nothing is printed
 Discuss Question
Answer: Option D. -> "error" is printed
Question 25.

Which statement is true?


  1.    A try statement must have at least one corresponding catch block.
  2.    Multiple catch statements can catch the same class of exception more than once.
  3.    An Error that might be thrown in a method must be declared as thrown by that method, or be handled within that method.
  4.    Except in case of VM shutdown, if a try block starts to execute, a corresponding finally block will always start to execute.
 Discuss Question
Answer: Option D. -> Except in case of VM shutdown, if a try block starts to execute, a corresponding finally block will always start to execute.

A is wrong. A try statement can exist without catch, but it must have a finally statement.

B is wrong. A try statement executes a block. If a value is thrown and the try statement 

has one or more catch clauses that can catch it, then control will be transferred to the first 

such catch clause. If that catch block completes normally, then the try statement completes

 normally.

C is wrong. Exceptions of type Error and RuntimeException do not have to be caught, only 

checked exceptions (java.lang.Exception) have to be caught. However, speaking of Exceptions,

 Exceptions do not have to be handled in the same method as the throw statement. They can be

 passed to another method.

If you put a finally block after a try and its associated catch blocks, then once execution enters 

the try block, the code in that finally block will definitely be executed except in the following 

circumstances:

  1. An exception arising in the finally block itself.
  2. The death of the thread.
  3. The use of System.exit()
  4. Turning off the power to the CPU.
I suppose the last three could be classified as VM shutdown.


Question 26.

Which four can be thrown using the throw statement?

    1. Error

    2. Event

    3. Object

    4. Throwable

    5. Exception

    6. RuntimeException



  1.    1, 2, 3 and 4
  2.    2, 3, 4 and 5
  3.    1, 4, 5 and 6
  4.    2, 4, 5 and 6
 Discuss Question
Answer: Option C. -> 1, 4, 5 and 6

The (1), (4), (5) and (6) are the only four that can be thrown.

An Error is a subclass of Throwable that indicates serious problems that a reasonable 

application should not try to catch.

The Throwable class is the superclass of all errors and exceptions in the Java language.

The class Exception and its subclasses are a form of Throwable that indicates conditions 

that a reasonable application might want to catch (checked exceptions)

RuntimeException is the superclass of those exceptions that can be thrown during the normal 

operation of the Java Virtual Machine.


Question 27.

Which statement is true?


  1.    catch(X x) can catch subclasses of X where X is a subclass of Exception.
  2.    The Error class is a RuntimeException.
  3.    Any statement that can throw an Error must be enclosed in a try block.
  4.    Any statement that can throw an Exception must be enclosed in a try block.
 Discuss Question
Answer: Option A. -> catch(X x) can catch subclasses of X where X is a subclass of Exception.

Option A is correct. If the class specified in the catch clause does have subclasses, any 

exception object that subclasses the specified class will be caught as well.

Option B is wrong. The error class is a subclass of Throwable and not Runtime Exception.

Option C is wrong. You do not catch this class of error.

Option D is wrong. An exception can be thrown to the next method higher up the call stack.


Question 28.
System.out.print("Start ");
try
{
System.out.print("Hello world");
throw new FileNotFoundException();
}
System.out.print(" Catch Here "); /* Line 7 */
catch(EOFException e)
{
System.out.print("End of file exception");
}
catch(FileNotFoundException e)
{
System.out.print("File not found");
}


and given that EOFException and FileNotFoundException are both subclasses of



IOException, and further assuming this block of code is placed into a class,



which statement is most true concerning this code?


  1.    The code will not compile.
  2.    Code output: Start Hello world File Not Found.
  3.    Code output: Start Hello world File Not Found.
  4.    Code output: Start Hello world Catch Here File not found.
 Discuss Question
Answer: Option A. -> The code will not compile.

Line 7 will cause a compiler error. The only legal statements after try blocks are either 

catch or finally statements.

Option B, C, and D are incorrect based on the program logic described above. If line 7 

was removed, the code would compile and the correct answer would be Option B.


Question 29.
public class ExceptionTest
{
class TestException extends Exception {}
public void runTest() throws TestException {}
public void test() /* Point X */
{
runTest();
}
}


At Point X on line 5, which code is necessary to make the code compile?


  1.    No code is necessary.
  2.    throws Exception
  3.    catch ( Exception e )
  4.    throws RuntimeException
 Discuss Question
Answer: Option B. -> throws Exception

Option B is correct. This works because it DOES throw an exception if an error occurs.

Option A is wrong. If you compile the code as given the compiler will complain:

"unreported exception must be caught or declared to be thrown" The class extends Exception 

so we are forced to test for exceptions.

Option C is wrong. The catch statement belongs in a method body not a method specification.

Option D is wrong. TestException is a subclass of Exception therefore the test method, in this 

example, must throw TestException or some other class further up the Exception tree. Throwing RuntimeException is just not on as this belongs in the java.lang.RuntimeException

 branch (it is not a superclass of TestException). The compiler complains with the same error 

as in A above.


Question 30.
import java.io.*;
public class MyProgram
{
public static void main(String args[])
{
FileOutputStream out = null;
try
{
out = new FileOutputStream("test.txt");
out.write(122);
}
catch(IOException io)
{
System.out.println("IO Error.");
}
finally
{
out.close();
}
}
}


and given that all methods of class FileOutputStream, including close(), throw an



IOException, which of these is true?


  1.    This program will compile successfully.
  2.    This program fails to compile due to an error at line 4.
  3.    This program fails to compile due to an error at line 6.
  4.    This program fails to compile due to an error at line 18.
 Discuss Question
Answer: Option D. -> This program fails to compile due to an error at line 18.

Any method (in this case, the main() method) that throws a checked exception (in this case, 

out.close() ) must be called within a try clause, or the method must declare that it throws the 

exception. Either main() must declare that it throws an exception, or the call to out.close() in 

the finally block must fall inside a (in this case nested) try-catch block.


Latest Videos

Latest Test Papers