Python基础---Task08:异常处理

捕获错误

try…except…else…finally…

  • 首先执行try…
  • 出现异常时,根据except条件先执行excecpt…,若没有满足except情况则执行else…;正常时不执行except… 和else…
  • 不管是否异常,程序最终都会执行finally…
a = input('input a number:') 
try: 
    # 先执行try缩进块,直到出现异常
    print('try...')
    r = 10 / int(a)
    print('result:', r)
except ValueError as e:
    # 若出现异常,尝试捕获可能出现的错误
    print('ValueError:', e)
except ZeroDivisionError :
    # e 为错误内容, 如何没有e可自设提示错误
    raise ZeroDivisionError('ZeroDivisionError---division by zero')
else:
    # 没有满足的错误出现时执行else
    print('no error!')    
finally:
    # 不管异常与否,都会执行finally
    print('finally...')
print('END')

>> input a number:0
>> ZeroDivisionError: ZeroDivisionError---division by zero
  • 注意:Pyth在这里插入代码片on所有的错误都是从BaseException类派生的
    常见的错误类型和继承关系:

https://docs.python.org/3/library/exceptions.html#exception-hierarchy

  • try…except…finally…可越多层捕获到错误源头,就像shell里的错误检索一样!

assert断言

  • 格式:assert <条件>,'条件不满足时的提示语’
def divide(x):
    x = int(x)
    assert x!=0,'x cannot be zero ' 
    #x为0时,assert抛出AssertError
    print('assert is done')
    return 10/x

def errortest():
    try:
        divide('0')
    except Exception:
        raise ValueError('x cannot be zero')

errortest()
>> ValueError: x cannot be zero
  • 注意:貌似AssertError 比 ValueError先出现,但程序默认先抛出ValueError

参考文献:
廖雪峰python教程:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017598873256736

10 days
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值