Convert catching Exception to use of scala.util.control.NonFatal

NonFatal is generally a good choice for catching "all exceptions"
because it makes reasonable choices about what to catch.

This does not use Try because Try doesn't have a good match for
finally { ... } clauses.