You could use a decorator function:
def catchall(f):
def func(*args, **kwargs):
try:
return f(*args, **kwargs)
except Exception as e:
return e
return func
Now this can be used on all of your "dodgy" functions:
@catchall
def error_prone_function(...):
and caught elsewhere:
result = error_prone_function(...)
if isinstance(result, Exception):
# deal with failure
else:
# success!
However, it is generally better to handle specific errors than the general case "something has gone wrong"; you should really figure out why each routine is failing and install localised error handling to manage it.