I am trying to make it clear of the difference between Throws in method signature and Throw Statements in Java. Throws in method signature is a
RuntimeExceptions dont have to be handled in try-catch block so they dont have to be declared as thrown and NoSuchElementException is RuntimeException because it extends it.
RuntimeException