I think you just need one catch block - for Exception. Unless I'm missing something, these all do the same thing. We can discuss the product bug offline :)

Catching Throwable means you can deal with lots of system errors. See http://stackoverflow.com/questions/352780/when-to-catch-java-lang-error