Java methods are crazy. Nutty. Intolerable sometimes.
When something bad happens in a program, like perhaps a user asks for an element of an array that doesn't exist, a method takes a hissy fit and will throw an exception. When crazy things happen, methods will throw, no ess (s) at the end, an exception. And there are all sorts of types of exceptions they can throw. In the array case, it would be an ArrayOutOfBoundsException.
Now, methods that are crazy must label themsevles as such. If you're going to work with crazy people, it's nice to know they're unstable. Any method that is nutty and will throw an exception must state, EXPLICITLY in the method declaration, the exceptions that it throwS.
public void myMethod() throws ExamScamException {
if(true) {throw new ExamScamException("Told ya I was crazy");}
}
There are exceptions. Certain runtime exceptions that can just happen don't have to be listed in the throws clause, but for the most part, if a method is nutty, it's gotta tell the world how it is nutty by listing the exceptions it throws.