带有多个except 的try语句,处理多个异常的except语句

带有多个except的try 语句

>>> def self_float(obj):
    try:
        return float(obj)
    except ValueError:
        retval = none
    return retval

>>> self_float(1234)
1234.0


>>> def self_float(obj):
    try:
        return float(obj)
    except ValueError:
        retval = 'could not convert non-number to float'
    return retval

>>> self_float(1234)
1234.0

>>> self_float("foo")
'could not convert non-number to float'


改造之后的的函数,我们已经可以探测到非法的字符串输入了,可如果传递一个非法的对象,还是会受伤。

>>> self_float(foo)
Traceback (most recent call last):
  File "<pyshell#112>", line 1, in <module>
    self_float(foo)
NameError: name 'foo' is not defined


此时需要多个except语句,每个except语句对应一种异常类型。

>>> def safe_float(obj):
    try:
        return float(obj)
    except ValueError:
        retval = 'could not convert non-number to float'
    except TypeError:
        retval = 'object type cannot be converted to float'
    return retval

>>> safe_float(())
'object type cannot be converted to float'
>>> safe_float('sd1')
'could not convert non-number to float'


处理多个异常的except语句:

我们还可以在一个except语句里处理多个异常。except语句在处理多个异常时要求异常被放在一个元组里。

改进上述函数,要求所有异常必须使用同样的代码处理

>>> def safe_float(obj):
    try:
        return float(obj)
    except (ValueError,NameError,TypeError):
        retval = 'object type cannot be converted to float'
    return retval

>>> safe_float(())
'object type cannot be converted to float'
>>> safe_float("123")
123.0
>>> safe_float('123e')
'object type cannot be converted to float'




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值