The program is run with java -ea Snippet16 - what will be the output?
public class Snippet16
{
private static int shrink(int n)
{
assert n > 0;
return n - 1;
}
public static void main(String[] args)
{
try
{
shrink(0);
}
catch (AssertionError e)
{
System.out.println("message: " + e.getMessage());
}
}
}
Answer: D
The one-expression form of assert calls the no-argument AssertionError constructor, which leaves the detail message unset, so getMessage() returns null. Concatenating null into a string produces the four characters null, giving message: null rather than a trailing space. This is why the two-expression form is worth using.
Please log in or register to report this question.