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?
      try 
      {
          Float f1 = new Float("3.0");
          int x = f1.intValue();
          byte b = f1.byteValue();
          double d = f1.doubleValue();
          System.out.println(x + b + d);
      }
      catch (NumberFormatException e) /* Line 9 */
      {
          System.out.println("bad number"); /* Line 11 */
      }
      

    • Options
    • A. 9.0
    • B. bad number
    • C. Compilation fails on line 9.
    • D. Compilation fails on line 11.
    • Discuss
    • 2. What will be the output of the program?
      String a = "newspaper";
      a = a.substring(5,7);
      char b = a.charAt(1);
      a = a + b;
      System.out.println(a);
      

    • Options
    • A. apa
    • B. app
    • C. apea
    • D. apep
    • Discuss
    • 3. Which statement is true?

    • Options
    • A. The notifyAll() method must be called from a synchronized context.
    • B. To call wait(), an object must own the lock on the thread.
    • C. The notify() method is defined in class java.lang.Thread.
    • D. The notify() method causes a thread to immediately release its locks.
    • Discuss
    • 4. Which statement is true?
      class Test1 
      {
          public int value;
          public int hashCode() { return 42; }
      }
      class Test2 
      {
          public int value;
          public int hashcode() { return (int)(value^5); }
      }
      

    • Options
    • A. class Test1 will not compile.
    • B. The Test1 hashCode() method is more efficient than the Test2 hashCode() method.
    • C. The Test1 hashCode() method is less efficient than the Test2 hashCode() method.
    • D. class Test2 will not compile.
    • Discuss
    • 5. Assuming that the equals() and hashCode() methods are properly implemented, if the output is "x = 1111", which of the following statements will always be true?
      x = 0;
      if (x1.hashCode() != x2.hashCode() )  x = x + 1;
      if (x3.equals(x4) )  x = x + 10;
      if (!x5.equals(x6) ) x = x + 100;
      if (x7.hashCode() == x8.hashCode() )  x = x + 1000;
      System.out.println("x = " + x);
      

    • Options
    • A. x2.equals(x1)
    • B. x3.hashCode() == x4.hashCode()
    • C. x5.hashCode() != x6.hashCode()
    • D. x8.equals(x7)
    • Discuss
    • 6. The static method Thread.currentThread() returns a reference to the currently executing Thread object. What is the result of this code?
      class Test 
      {
          public static void main(String [] args) 
          {
              printAll(args);
          }
      
          public static void printAll(String[] lines) 
          {
              for(int i = 0; i < lines.length; i++)
              {
                  System.out.println(lines[i]);
                  Thread.currentThread().sleep(1000);
              }
          }
      }
      

    • Options
    • A. Each String in the array lines will output, with a 1-second pause.
    • B. Each String in the array lines will output, with no pause in between because this method is not executed in a Thread.
    • C. Each String in the array lines will output, and there is no guarantee there will be a pause because currentThread() may not retrieve this thread.
    • D. This code will not compile.
    • Discuss
    • 7. Which answer most closely indicates the behavior of the program?
      public class MyProgram 
      {
          public static void throwit() 
          {
              throw new RuntimeException();
          }
          public static void main(String args[])
          {
              try 
              {
                  System.out.println("Hello world ");
                  throwit();
                  System.out.println("Done with try block ");
              }
              finally 
              {
                  System.out.println("Finally executing ");
              }
          }
      }
      

    • Options
    • A. The program will not compile.
    • B. The program will print Hello world, then will print that a RuntimeException has occurred, then will print Done with try block, and then will print Finally executing.
    • C. The program will print Hello world, then will print that a RuntimeException has occurred, and then will print Finally executing.
    • D. The program will print Hello world, then will print Finally executing, then will print that a RuntimeException has occurred.
    • Discuss
    • 8. Which two code fragments will compile?
      1. interface Base2 implements Base {}
      2. abstract class Class2 extends Base
        { public boolean m1(){ return true; }}
      3. abstract class Class2 implements Base {}
      4. abstract class Class2 implements Base
        { public boolean m1(){ return (7 > 4); }}
      5. abstract class Class2 implements Base
        { protected boolean m1(){ return (5 > 7) }}
      interface Base 
      {
          boolean m1 ();
          byte m2(short s);
      }
      

    • Options
    • A. 1 and 2
    • B. 2 and 3
    • C. 3 and 4
    • D. 1 and 5
    • Discuss
    • 9. Which statement, if placed in a class other than MyOuter or MyInner, instantiates an instance of the nested class?
      public class MyOuter 
      {
          public static class MyInner 
          {
              public static void foo() { }
          }
      }
      

    • Options
    • A. MyOuter.MyInner m = new MyOuter.MyInner();
    • B. MyOuter.MyInner mi = new MyInner();
    • C. MyOuter m = new MyOuter();

      MyOuter.MyInner mi = m.new MyOuter.MyInner();

    • D. MyInner mi = new MyOuter.MyInner();
    • Discuss
    • 10. What will be the output of the program, if this code is executed with the command line:

      > java F0091 world

      public class F0091 
      {    
          public void main( String[] args ) 
          {  
              System.out.println( "Hello" + args[0] ); 
          } 
      }
      

    • Options
    • A. Hello
    • B. Hello Foo91
    • C. Hello world
    • D. The code does not run.
    • Discuss


    Comments

    There are no comments.

Enter a new Comment