python 基础10 异常

异常简介

异常是指在语法正确的前提下,程序运行时报错就是异常

当python脚本发生了异常时我们需要捕获它,否则程序会终止执行。

捕获异常

1 基本语法

try:

     ...代码1...

     ..代码2...

except 异常类型:

      ..代码3...

        try中一旦检测到异常,就执行这个位置的逻辑

try:
    print('start...')
    print(1/0)
    print('end...')
except ZeroDivisionError:
    print('try中的代码执行出错了就执行这里的代码')
print('程序结束')

执行流程:

先执行try中的代码,如果代码2报错,则不会执行代码3,执行的是exception中的代码

注意:

如果发生的异常类型和捕获的异常类型不一致,程序还会报错。

except   捕获多个异常

异常捕获流程:依次捕获,直到捕获到对应的异常

1 多分支格式:

try:

      执行的代码1

except 异常类型:

     执行的代码2

except 异常类型:

     执行的代码3

except 异常类型:

     执行的代码3

try:
    print('start')
    lst = [12,3]
    # print(1/0)
    print(lst[2])
    print('end')
except ZeroDivisionError:
    print('除数为零了')
except IndexError:
    print('索引越界')
print('程序结束了')

二   元组结构形式:

try:

      执行的代码

except(异常类型1,异常类型2,异常类型3):

      捕获异常.....

try:
    print('start')
    lst = [12,3]
    # print(1/0)
    print(lst[2])
    print('end')
except (ZeroDivisionError,IndexError):
    print('捕获异常')
print('程序结束了')

3 获取异常的信息描述

try:

     执行代码...

except 异常类型 as 变量名:

     执行异常

try:
    print('程序开始')
    print(1/0)
except ZeroDivisionError as e:
    print(e)   
# division by zero

4  else 

在if中,它的作用是当条件不满足时执行的实行;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情

try:
    print('haha')
    print(1/0)
except:
    print('捕获到了异常')
else:
    print('没有发生异常')

注意 : else 一定要有except  否则语法报错

5  try...finally...

  try...finally...语句用来表达这样的情况:

在程序中,如果一个代码段必须要执行,即无论异常是否产生都要执行,,那么此时就需要用到finally

比如文件关闭,释放锁,把数据库连接返回给连接池中。

说明: 不管try中语句有没有执行成功,都会执行finally当中的

try:
    print('aaa')
    print(1/0)
    lst=[]
    print(lst[0])
except ZeroDivisionError as e:
    print(e)
except IndexError as e :
    print(e)
finally:
    print('无论有没有异常都要执行')

"""
aaa
division by zero
无论有没有异常都要执行
"""

6 触发异常

可以用raise语句来引发一个异常,异常、错误对象必须要有一个名字,而且他们应该是Error或者Exception的子类

(1)使用raise抛出系统的异常

raise IndexError('索引异常')

while True:
    name = input('请输入姓名(不能少于3位):')
    try:
        if len(name) < 3:
            raise Exception('姓名太少了,请重新输入')
        else:
            pwd = input('请输入密码')
        print(name,pwd)
    except Exception as e:
        print(e)
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值