
在
except ValueError,e,
e是例外,而不是字符串的实例。因此,当您测试
e不等于特定字符串时,该测试始终为False。尝试:
if str(e) != "..."
代替。
例:
def catch(msg): try: raise ValueError(msg) except ValueError as e: # as e syntax added in ~python2.5 if str(e) != "foo": raise else: print("caught!")catch("foo")catch("bar")通常,如果可以帮助您,您并不是真的希望依赖于错误消息-这太脆弱了。如果您可以控制callable
macdat,而不是引发
ValueErrorin
macdat,则可以引发自定义异常,该异常继承自
ValueError:
class MyValueError(ValueError): pass
然后,您只能捕获
MyValueError并让其他
ValueErrors继续被其他事物捕获(或不捕获)。Simple
exceptValueError仍然也会捕获这种类型的异常,因此它在其他代码中的行为应相同,这也可能从此函数捕获ValueErrors。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)