10-6
def safeOpen(filepath, mod='r'):
try:
fobj = open(filepath, mod)
return fobj
except Exception:
fobj = None
finally:
if fobj:
fobj.close
return fobj
10-7
如果没有引发异常,或者statement_A引发了异常,(a)和(b)的执行结果一样;如果statement_B引发了异常,(a)会向上一层抛出异常,(b)会执行except
10-8
def safeRaw_input(prompt=""):
try:
retval = raw_input(prompt)
except EOFError:
retval = None
except KeyboardInterrupt:
retval = None
return retval
10-9
import math
import cmath
def safe_sqrt(val):
try:
retval = math.sqrt(val)
except ValueError:
retval = cmath.sqrt(val)
return retval