View the exhibit.
Given the code fragment:
Which change enables the code to print the following?
James age: 20
Williams age: 32
A. Replacing line 5 with public static void main (String [] args) throws MissingInfoException, AgeOutofRangeException {
B. Replacing line 5 with public static void main (String [] args) throws.Exception {
C. Enclosing line 6 and line 7 within a try block and adding:
catch(Exception e1) { //code goes here}
catch (missingInfoException e2) { //code goes here}
catch (AgeOutofRangeException e3) {//code goes here}
D. Enclosing line 6 and line 7 within a try block and adding:
catch (missingInfoException e2) { //code goes here}
catch (AgeOutofRangeException e3) {//code goes here}
Option B.
class MissingInfoException extends Exception { }
class AgeOutofRangeException extends Exception { }
class Candidate {
String name;
int age;
Candidate (String name, int age) throws Exception {
if (name == null) {
throw new MissingInfoException();
} else if (age =150) {
throw new AgeOutofRangeException();
} else {
this.name = name;
this.age = age;
}
}
public String toString() {
return name + ” age: ” + age;
}
}
public class Test {
public static void main(String[] args) throws Exception{ // only VALID option!!!
Candidate c = new Candidate(“James”, 20);
Candidate c1 = new Candidate(“Williams”, 32);
System.out.println(c);
System.out.println(c1);
}
}
Output:
James age: 20
Williams age: 32
B is the correct answer.
C is incorrect because Exception is a more general exception than missingInfoException or AgeOutofRangeException and should go last. Also, since c and c1 are declared in the try block, those lines would generate these errors:
c cannot be resolved to a variable
c1 cannot be resolved to a variable