Python基础---异常

44 篇文章 0 订阅
34 篇文章 0 订阅

1.异常简介

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

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

怎样能让程序发生异常时,不让程序停止,能正常运行呢?如下效果,就需要捕获异常。

2.捕获异常

基本语法:

try:

     ...代码1...

     ...代码2...

     ...代码3...

except 异常类型:

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

执行流程:

先执行try中的代码,如果代码2报错,则不会执行代码3,而是执行except中的异常代码。

练习:

try:
    print('start...')
    print(1/0)
    print('end....')
except ZeroDivisionError:
    print('您的除数为0了')
print('allend...')

注意事项:

如果发生的异常类型和捕获的异常类型不相同,还是不能捕获异常,程序还会报错​​。

3.捕获多个异常

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

多分支结构格式:

try:

      执行的代码...

except 异常类型:

      捕获异常1

except 异常类型 :

     捕获异常2

except 异常类型:

     捕获异常3

...

第一种情况:

第二种情况:

元组形式结构:

try:

     执行的代码...

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

     捕获异常...

不会指出具体的异常,只能捕获

try:
    print('程序开始了')
    print(1/0)
    print('哈哈哈')
    lst=[]
    print(lst[1])
    print('azyazy')
except (IndexError,ZeroDivisionError):
    print('程序出错了')
print('程序结束了。。。')

4.获取异常的信息描述

'''

获取异常信息描述格式:

try:

    ...代码1...

    ...代码2...

    ...代码3...

except 异常类型 as 变量名:

    ...代码4...

'''

注意变量名中保存的是异常信息

try:
    print(1/0)
except ZeroDivisionError as e:
    print('捕获到了异常')
    print(e)

 

2.捕获所有异常

(1)方式一

'''

try:

    ...代码...

    ...代码...

except:

    ...代码...

'''

注意except后什么都不用写

try:
    print(1/0)
    lst=[]
    print(lst[1])
except:
    print('捕获到了所有异常')
print('程序结束了')

 

(2)方式二

'''

try:

    ...代码...

    ...代码...

except Exception:

    ...代码...

'''

运用父类Exception的方式

try:
    print(1/0)
    lst=[]
    print(lst[1])
except Exception:
    print('捕获到了所有异常')
print('程序结束了')

 

3.try...else结构

'''

try:

    ...代码1...

    ...代码2...

except ZeroDivisionError:

    ...代码3...

else:

    ...代码4...

'''

没有捕获到异常的时候,执行else语句

未执行else

try:
    print(1/0)
except ZeroDivisionError:
    print('又报错了哦')
else:
    print('您的正确性极高,O(∩_∩)O哈哈~')
print('程序结束了。。。')

 

执行else 

try:
    print('azy')
except ZeroDivisionError:
    print('又报错了哦')
else:
    print('您的正确性极高,O(∩_∩)O哈哈~')
print('程序结束了。。。')

 

4.try...finally结构

'''

try:

    ...代码1...

    ...代码2...

except ZeroDivisionError:

    ...代码3...

finally: 

    ...代码4...

'''

try:
    print(1/0)
except ZeroDivisionError:
    print('又报错了哦')
finally:
    print('此乃通向人生巅峰的必经之路哦')
print('程序结束了。。。')

 

无论有没有异常finally下的代码始终执行

try:
    print('xxx')
except ZeroDivisionError:
    print('又报错了哦')
finally:
    print('此乃通向人生巅峰的必经之路哦')
print('程序结束了。。。')

 

5.抛出系统异常

需求:

当输入的用户名少于3位时,循环重新输入,直到正确,然后再输入密码,最后打印出用户名和密码

一般做法

while True:
    name=input('请输入用户名(不能少于3位)')
    if len(name)<3:
        print('长度少了,亲')
        continue
    else:
        pwd=input('请输入密码')
        print(name,pwd)

 

抛出系统异常 

while True:
    try:
        name=input('请输入用户名(不能少于3位)')
        if len(name)<3:
            raise Exception('长度少了,亲')#手动抛出异常
        else:
            pwd=input('请输入密码')
        print(name,pwd)
    except Exception as e:
        print('xxx')
        print(e)

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值