When Bert has answered, the thread usually ends in his complete answer
But still I thought will extend on question number 2.
You need not memorize on all the exceptions a method throws. But certainly have to know about some exceptions like,
NumberFormatException which is thrown by methods trying to convert a string into a number.
InterruptedException thrown by sleep,join,wait methods upon interruption.
A few basics like these help you definitely. You dont require the extensive memorization of thrown exceptions definitely