 Remember that object that holds the exception information? Up to now we haven't used any of the information that object contains. One thing you can do is print that object, which will convert it to a string. It shows the name of the exception and information about it. If you want only the message that goes with the exception, use the exception's getMessage method. Instead of printing the entire exception, we'll print the getMessage, recompile, and rerun. If you want to print out the stack trace, which shows you all the information that you see when your program crashes, use the printStackTrace method. You don't need to do a system.out.printLine. PrintStackTrace automatically sends the output to your terminal. For those of you who are familiar with the Linux file system, the output is sent to the standard error device, which by default is your terminal. Let's compile that and run it, and that's the stack trace. Sometimes you have code that has to be executed, whether the try block succeeds or whether an exception occurs. Let's show this in action. If it succeeds, I do the cleanup code, and if it fails, I also do the cleanup code. Rather than duplicate the code, I can add a finally block. And inside that block, I'll put the code that's common to the try and the catch. Let's recompile, and let's run it with good input and with bad input. The code inside the finally block is guaranteed to be executed no matter whether the try block or a catch block was used. The code in the finally block will be executed even if there is a return in the try or catch.