Is a program required to catch all exceptions that might happen?
No. You can write a program to catch just the exceptions you want.
No. But if a program catches one type of exception it must catch all other types as well.
Yes. If a program is not written to catch all exceptions it will not compile.
Yes. A program can not do I/O unless it catches all exceptions.