Ohhhhh! Now I see your question. At frist I was going to say that maybe it throws an Error instead of an exception, but I checked and that isn't it. So I put the code into the copiler and the compiler barfed. Exception in thread "main" java.lang.ArithmeticException: / by zero at Test.main(Test.java:9) That's why it doen't do finally. You can't run the program unless you can compile it. You can't compile it because you don't have any code that throws an IOException in your try block. I changed the IOException to Exception and it ran fine.