python基础⑧-异常

系列文章目录


python基础①-基础环境搭建和工具使用
python基础②-常用的各种数据类型初认知
python基础③-数据类型常用的操作和方法字符串、数值、bool
python基础④-数据类型常用的操作和方法列表、元组、字典、集合
python基础⑤-控制流程
python基础⑥-函数
python基础⑦-字符编码与文件操作
python基础⑧-异常
python基础⑨-迭代器和生成器
python基础⑩-面向对象
python基础⑪-继承与派生
python基础⑫-多进程
python基础⑬-多线程
python基础⑭-进程池、线程池、协程
python基础⑮-网络编程socket
python基础⑯-网络编程socket进阶


'''
1.异常
    异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常
    没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止

    异常包含三个部分:
        1.异常的追踪信息 File "D:/python代码1/day7/异常.py", line 8, in <module>
        2.异常的类型     NameError
        3. 异常的信息   name 'a' is not defined
    错误分为两大类:
        1. 语法上的错误:在程序运行前就应该立即修正  这个好避免
        2. 逻辑上的错误:比如:字典没有key,你非要取key,
                            列表没有索引
                            变量没有名字  这些不好避免
2.为何要异常处理
    避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性

3. 如何异常处理
try:
    代码1
    代码2
    代码3
    ......
except NameError:
    当抛出的异常是NameError时执行的子代码块
except ....:
    pass
else:
    pass
finally:
    pass
'''

基础用法

def a():
    print(111)
a
# 异常处理的单分支
try:
    a
except NameError as e:
    print('兄弟你检查一下代码')
    print(e)
else:
    # 程序没有抛出异常的时候执行
    print('代码正确')
finally:
    # 不管有错没错 一定会执行的部分
    print('完成了异常捕获')


在这里插入图片描述

常见异常

# 常见异常
# print(1+'a') # TypeError
# print(1+)    # SyntaxError
# d = {'x':1,'y':2} # KeyError
# d['z']
# l = [1,2] # IndexError
# l[3]
try:
    a
    print('=====1>')
    print('=====1>')
    print('=====1>')
    l = [1,2] # IndexError
    l[3]
except NameError as e:
    print(e)
except IndexError as e:
    print(e)
else:
    # 程序没有抛出异常的时候执行
    print('代码正确')
finally:
    # 不管有错没错 一定会执行的部分
    print('完成了异常捕获')

在这里插入图片描述

合并捕获多种异常

# 合并
try:
    # a
    print('=====1>')
    print('=====1>')
    print('=====1>')
    l = [1,2] # IndexError
    l[3]
except (NameError,IndexError,KeyError) as e:
    print(e)
else:
    # 程序没有抛出异常的时候执行
    print('代码正确')
finally:
    # 不管有错没错 一定会执行的部分
    print('完成了异常捕获')

万能捕获


# 判断文件是否存在
# 如果不存在创建
# try:
#     f = open('text1.txt','r')
# except:
#     print('你的文件没有创建')
#     f = open('text1.txt','w')
#     print('我帮你创建了')
# else:
#     print(f.read())
# finally:
#     f.close()

在这里插入图片描述

断言

# 了解
# 断言
print('=======111')
# 自定义异常
l = [1, 2, 3, 4]
# if len(l) != 5:
#     raise TypeError('列表的长度必须为5,这是我的规则')
# 断言如果条件不满足会抛异常
assert len(l) == 5
print('=======222')

在这里插入图片描述

finally 必然执行

结合异常处理,确保打开文件后的正常关闭。用open直接打开一个文件,然后write进行写入,假设在写入的时候可能会报错,

# 写段代码确保报错的情况下依然可以把文件关闭掉。
f = open('text2.txt','w')
try:
    dic = {'name':'dahai'}
    f.write(dic['aaa'])
except Exception as e:
    print(e)
finally:
    f.close()
    print('文件已关闭')

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七层汉堡王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值