READING CHAPTER 8 SECTION 4 "Types of Exceptions" - *checked exception* - an exception that is checked at compile time - method containing must do one of to compile - have a throws clause - have a try catch block around the statement that throws the exception - *unchecked exception* - aka runtime exception - not checked at compile time - detected only at runtime - e.g. - ArithmeticException: division by zero - NumberFormatException: trying to convert a string with letters to an int - throws clause optional for method containing - methods can be implicit propagators - because nearly every method can throw a runtime exception - Error - too serious to catch - so not required to handle them Quick Check 1. No, because according to Figure 8.5, IllegalArgumentException is a subclass of RuntimeException, and we know that runtime exceptions needn't be explicitly caught or propagated. 2. Checked exceptions are explicitly checked at compiler time, and thus require that a method that directly or indirectly throws one either include a try-catch block, or include a throws clause in its signature. 3. Yes. According to Figure 8.5, IOException is not a runtime exception, and this code neither includes a try-catch block, nor includes "throws IOException" in its signature, as is required for checked exceptions.