replace BaseException with Exception

From Issue #382:

http://docs.python.org/2/library/exceptions.html

"The built-in exception classes can be sub-classed to define new exceptions; programmers are encouraged to at least derive new exceptions from the Exception class and not BaseException."

catch BaseException will catch things like KeyboardInterrupt, which you don't want to be catching.