[关闭]
@zzy0471 2018-04-09T15:11:15.000000Z 字数 741 阅读 965

Python乱记第八:异常处理

Python


捕获异常

Python通过try except else finally捕获异常,如:

try:
    num = 10 / 0
except ZeroDivisionError as e:
    print('error:', e)
else:
    print('no error')
finally:
    print('finished')

其中,tryexcept是必需的,elsefinally是可选的,except可以有多个,待捕获的异常逐渐泛化。常用内置异常可在官网查看

抛出异常

关键字raise用了抛出异常:

def set_age(age):
if not isinstance(age, int):
    raise ValueError('only need int')
print('age is ', age)

try:
    set_age('100')
except ValueError as e:
    print('error:', e)
except Exception as e:
    print('error', e)

自定义异常类

class InvalidRange(ValueError):
    pass

def set_age(age):
    if not isinstance(age, int):
        raise ValueError('only need int')
    if age <= 0 or age >120:
        raise InvalidRange('out of range(0,120)')
    print('age is ', age)

try:
    set_age(-1)
except InvalidRange as e:
    print('error:', e)
except ValueError as e:
    print('error:', e)
except Exception as e:
    print('error', e)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注