Question:
Why do I have to catch an exception when I use System.in.read()?
Answer:
System.in is an InputStream, and like any InputStream, an I/O error
may occur when you read from it. For example, the Java program may
have been run as a background process with no standard input, causing
an error during a read attempt.
InputStream.read() throws an
IOException if an error occurs while reading from the stream. This
exception is not derived from RuntimeException and must be caught or else
your program will not compile.