Newsletter:

(Quiz) SCJP (Sun Certified Java Program) Flow Control and Exception Handiling

QUIZ: SCJP (Sun Certified Java Program) Flow Control and Exception Handiling

Questions 1 The following method is designed to convert an input string to a floating point number while detecting a bad format. [I think factor must have been declared as float member variable or something]
public boolean strCvt(String s) {
try {
factor = Float.valueOf(s).floatValue();
return true;
} catch (NumberFormatException e) {
System.out.println(“Bad number ” + s);
factor = Float.NaN;
} finally {
System.out.println(“Finally”);
}
return false;
}
Which of the following descriptions of the results of various inputs to the method are correct?
(a) Input = “0.234” – Result: factor = 0.234, “Finally” is printed, true is returned.
(b) Input = “0.234” – Result: factor = 0.234, “Finally” is printed, false is returned.
(c) Input = null – Result: factor = NaN, “Finally” is printed, false is returned.
(d) Input = null – Result: factor = unchanged, “Finally” is printed, NullPointerException is thrown.

Answers:1 (a), (d)
(b) is wrong because the return value in line 4 is used. (c) is wrong because a NullPointerException is thrown in line 3 and is not caught in the method, line 7 is never reached.

Questions 2 Here is the hierarchy of exceptions related to array index and string index errors:
Exception
+-- RuntimeException
+-- IndexOutOfBoundsException
+-- ArrayIndexOutOfBoundsException
+-- StringIndexOutOfBoundsException
Suppose you had a method X that could throw both array index and string index exceptions. Assuming that X does not have any try-catch statements, which of the following statements are correct?
(a) The declaration for X must include “throws ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException”.
(b) If a method calling X catches IndexOutOfBoundsException, both array and string index exceptions will be caught.
(c) If the declaration for X includes “throws IndexOutOfBoundsException”, any calling method must use a try-catch block.
(d) The declaration for X does not have to mention exceptions.

Answers:2 (b), (d)
(b) is correct because exceptions obey a hierarchy just like other objects. Because these exceptions descend from RuntimeException, they do not have to be declared. Therefore, answer (d) is correct. The significant word here is “must”. Because these exceptions descend from RuntimeException, they do not have to be declared. Therefore, answer (a) is incorrect. Answer (c) is incorrect for a similar reason, because these exceptions descend from RuntimeException. They do not have to be caught even if declared by method X.

Questions 3 Which will be the first line to cause an error in the following code?
Select one correct answer.
1 class Char
2 {
3 public static void main(String arg[])
4 {
5 while(false)
6 {
7 System.out.println("Hello");
8 }
9 while(false)
10 {
11 }
12 do;
13 while(false);
14 do
15 {
16 ;
17 }
18 while(false);
19 }
20 }
(a) Line no. 5
(b) Line no. 9
(c) Line no. 12
(d) Line no. 16

Answers:3 (a)
It will give you error for unreached statement.All other statements are valid.

Questions 4 What will be the result of compiling and running the given program?
Select one correct answer.
1 public class exception
2 {
3 public static void main(String args[])
4 {
5 System.out.println("A");
6 try
7 {
8 }
9 catch(java.io.IOException t)
10 {
11 System.out.println("B");
12 }
13 System.out.println("C");
14 }
15 }
(a) Compile time error.
(b) Program compiles correctly and prints "A" when executed.
(c) Program compiles correctly and prints "A" and "C" when executed.
(d) Run time error.

Answers:4 (a)
You cannot use any checked exception in a catch block if it never thrown.

Questions 5 What will be the result of compiling and running the given program?
Select one correct answer.
1 public class exception
2 {
3 public static void main(String args[])
4 {
5 System.out.println("A");
6 try
7 {
8 return;
9 }
10 catch(Exception e)
11 {
12 System.out.println("B");
13 }
14 System.out.println("C");
15 }
16 }
(a) Compile time error in line no. 8 as main() method is declared void.
(b) Program compiles correctly and prints "A" when executed.
(c) Program compiles correctly and prints "A" and "C" when executed.
(d) Compile time error at line no.14 due to statement not reached.

Answers:5 (b)
You can use return(without any value) in a method which is declared void.As return is used it will not print "C" but at the same time there will be no error for that.

Questions 6 What will be the result of compiling and running the given program?
Select one correct answer.
1 public class exception
2 {
3 public static void main(String args[])
4 {
5 System.out.println("A");
6 try
7 {
8 return;
9 }
10 catch(Exception e)
11 {
12 System.out.println("B");
13 }
14 finally
15 {
16 System.out.println("C");
17 }
18 }
19 }
(a) Compile time error in line no. 8 as main() method is declared void.
(b) Program compiles correctly and prints "A" when executed.
(c) Program compiles correctly and prints "A" and "C" when executed.
(d) Program compiles correctly and prints "A","B" and "C" when executed.

Answers:6 (c)
As this time we have used finally so it will print "A" and "C".Finaly will always execute irrespective of whether exception is thrown or not.

Questions 7 What will be the result of compiling and running the given program?
Select one correct answer.
1 public class exception
2 {
3 public static void main(String args[])
4 {
5 System.out.println("A");
6 try
7 {
8 System.out.println("B");
9 System.exit(0);
9 }
10 catch(Exception e)
11 {
12 System.out.println("C");
13 }
14 finally
15 {
16 System.out.println("D");
17 }
18 }
19 }
(a) Program compiles correctly and prints "A" when executed.
(b) Program compiles correctly and prints "A" and "B" when executed.
(c) Program compiles correctly and prints "A" and "C" when executed.
(d) Program compiles correctly and prints "A","B" and "C" when executed.

Answers:7 (b)
System.exit() will restrict the finally block to be executed.