This week's book giveaway is in the General Computing forum. We're giving away four copies of Arduino in Action and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line! See this thread for details.
Why do you think m2 is required to throw a WhiteException?
The method m2 doesn't actually throw the WhiteException, so it just returns normally. The throws keyword only says "Look out! I could throw this Exception if things go wrong!" It doesn't mean that the Exception WILL be thrown, only that it CAN be.