在python中无法执行单行异常处理语句。一个人可以编写一个函数来做到这一点。
def safe_execute(default, exception, function, *args): try: return function(*args) except exception: return default
用法示例:
from json import loadssafe_execute("Oh no, explosions occurred!", TypeError, loads, None)# Returns "Oh no, explosions occurred!"safe_execute("Huh?", TypeError, int, "10")#Returns 10支持多个参数
from operator import divsafe_execute( "Divsion by zero is invalid.", ZeroDivisionError, div, 1, 0)# Returns "Divsion by zero is invalid."safe_execute( "Divsion by zero is invalid.", ZeroDivisionError, div, 1, 1)# Returns 1.
错误捕获过程可能仍然被中断:
from time import sleepsafe_execute( "Panic!", Exception, sleep, 8)# Ctrl-c will raise a KeyboardInterruptfrom sys import exitsafe_execute("Failed to exit!", Exception, exit)# Exits the Python interpreter如果这种行为是不希望的,请使用
baseException:
from time import sleepsafe_execute("interrupted", baseException, sleep, 8)#Pressing Ctrl-c will return "interrupted"from sys import exitsafe_execute("Naughty little program!", baseException, exit)#Returns "Naughty little program!"


