Machine-translated by Google. Questions are authored in English.
Top

Discussion

The program is run with java -ea Probe14 - what will be the output?

public class Probe14
{
    public static void main(String[] args)
    {
        try
        {
            assert false;
        }
        catch (Error e)
        {
            System.out.println("caught " + e.getClass().getSimpleName());
        }
    }
}

  • A.Compilation fails.
  • B.caught AssertionError
  • C.The program prints caught Error
  • D.No output is produced.

Answer: B

AssertionError is a subclass of Error, so this catch block does match. getSimpleName() reports the runtime class of the object thrown, which is AssertionError rather than the declared catch type, so the output is caught AssertionError. Catching Error like this is legal but a bad habit.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.