You are using invalid arguments for your showMessageDialog().
(Component, Object, String, int) are the arguments.
JOptionPane.showMessageDialog(this,
"Eggs are not supposed to be green.",
"Inane warning",
JOptionPane.WARNING_MESSAGE);
You use "this" as the first argument for showMessageDialog. Using "this" will call the Person object you have created. Your Person object is not a Component, so the method encounters an error. I would simply replace "this" with null for the first argument.
As to why that exception is caused, I think you have to have the try / catch combination there not because the date conversion
always causes an exception, but only because it
CAN cause an exception. These exceptions won't always occur, but if they do the program has to be able to catch the exception if it occurs.
Edit: I apologize, I didn't see that you had tried null already. What happens when you use null? That always works fine for me...
Hopefully this helps!