logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Exceptions See What Others Are Saying!
  • Question
  • Which statement is true?


  • Options
  • A. A try statement must have at least one corresponding catch block.
  • B. Multiple catch statements can catch the same class of exception more than once.
  • C. An Error that might be thrown in a method must be declared as thrown by that method, or be handled within that method.
  • D. Except in case of VM shutdown, if a try block starts to execute, a corresponding finally block will always start to execute.

  • Correct Answer
  • Except in case of VM shutdown, if a try block starts to execute, a corresponding finally block will always start to execute. 

    Explanation
    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.


    More questions

    • 1. What will be the output of the program?
      public class WrapTest 
      {
          public static void main(String [] args) 
          {
              int result = 0;
              short s = 42;
              Long x = new Long("42");
              Long y = new Long(42);
              Short z = new Short("42");
              Short x2 = new Short(s);
              Integer y2 = new Integer("42");
              Integer z2 = new Integer(42);
      
              if (x == y) /* Line 13 */
                  result = 1;
              if (x.equals(y) ) /* Line 15 */
                  result = result + 10;
              if (x.equals(z) ) /* Line 17 */
                  result = result + 100;
              if (x.equals(x2) ) /* Line 19 */
                  result = result + 1000;
              if (x.equals(z2) ) /* Line 21 */
                  result = result + 10000;
      
              System.out.println("result = " + result);
          }
      }
      

    • Options
    • A. result = 1
    • B. result = 10
    • C. result = 11
    • D. result = 11010
    • Discuss
    • 2. Which three are valid declarations of a float?

      1. float f1 = -343;
      2. float f2 = 3.14;
      3. float f3 = 0x12345;
      4. float f4 = 42e7;
      5. float f5 = 2001.0D;
      6. float f6 = 2.81F;

    • Options
    • A. 1, 2, 4
    • B. 2, 3, 5
    • C. 1, 3, 6
    • D. 2, 4, 6
    • Discuss
    • 3. Which statement is true?

    • Options
    • A. catch(X x) can catch subclasses of X where X is a subclass of Exception.
    • B. The Error class is a RuntimeException.
    • C. Any statement that can throw an Error must be enclosed in a try block.
    • D. Any statement that can throw an Exception must be enclosed in a try block.
    • Discuss
    • 4. What will be the output of the program?
      import java.util.*;
      public class NewTreeSet2 extends NewTreeSet 
      {
          public static void main(String [] args) 
          {
              NewTreeSet2 t = new NewTreeSet2();
              t.count();
          }
      }
      protected class NewTreeSet
      {
          void count() 
          {
              for (int x = 0; x < 7; x++,x++ ) 
              {
                  System.out.print(" " + x);
              }
          }
      }
      

    • Options
    • A. 0 2 4
    • B. 0 2 4 6
    • C. Compilation fails at line 2
    • D. Compilation fails at line 10
    • Discuss
    • 5. What will be the output of the program?
      int x = 3; 
      int y = 1; 
      if (x = y) /* Line 3 */
      {
          System.out.println("x =" + x); 
      }
      

    • Options
    • A. x = 1
    • B. x = 3
    • C. Compilation fails.
    • D. The code runs with no output.
    • Discuss
    • 6. What will be the output of the program?
      public static void main(String[] args) 
      {
          Object obj = new Object() 
          {
              public int hashCode() 
              {
                  return 42;
              }
          }; 
          System.out.println(obj.hashCode()); 
      }
      

    • Options
    • A. 42
    • B. Runtime Exception
    • C. Compile Error at line 2
    • D. Compile Error at line 5
    • Discuss
    • 7. What will be the output of the program?
      public class SyncTest 
      {
          public static void main (String [] args) 
          {
              Thread t = new Thread() 
              {
                  Foo f = new Foo();
                  public void run() 
                  {
                      f.increase(20);
                  }
              };
          t.start();
          }
      }
      class Foo 
      {
          private int data = 23;
          public void increase(int amt) 
          {
              int x = data;
              data = x + amt;
          }
      }
      
      and assuming that data must be protected from corruption, what?if anything?can you add to the preceding code to ensure the integrity of data?

    • Options
    • A. Synchronize the run method.
    • B. Wrap a synchronize(this) around the call to f.increase().
    • C. The existing code will cause a runtime exception.
    • D. Synchronize the increase() method
    • Discuss
    • 8. What is the most restrictive access modifier that will allow members of one class to have access to members of another class in the same package?

    • Options
    • A. public
    • B. abstract
    • C. protected
    • D. synchronized
    • E. default access
    • Discuss
    • 9. Which of the following statements is true?

    • Options
    • A. If assertions are compiled into a source file, and if no flags are included at runtime, assertions will execute by default.
    • B. As of Java version 1.4, assertion statements are compiled by default.
    • C. With the proper use of runtime arguments, it is possible to instruct the VM to disable assertions for a certain class, and to enable assertions for a certain package, at the same time.
    • D. When evaluating command-line arguments, the VM gives -ea flags precedence over -da flags.
    • Discuss
    • 10. What will be the output of the program?
      public class Switch2 
      {
          final static short x = 2;
          public static int y = 0;
          public static void main(String [] args) 
          {
              for (int z=0; z < 3; z++) 
              {
                  switch (z) 
                  {
                      case x: System.out.print("0 ");
                      case x-1: System.out.print("1 ");
                      case x-2: System.out.print("2 ");
                  }
              }
          }
      }
      

    • Options
    • A. 0 1 2
    • B. 0 1 2 1 2 2
    • C. 2 1 0 1 0 0
    • D. 2 1 2 0 1 2
    • Discuss


    Comments

    There are no comments.

Enter a new Comment