目录
- python面向对象07/异常处理
- 1.异常错误分类
- 2.什么是异常?
- 3.异常处理
- 4.为什么要有异常处理?
- 5.异常处理的两种方式
- 5.1 if判断
- 5.2 try
python面向对象07/异常处理
1.异常错误分类
语法错误:
# if 2 > 1
# print(222)
#
# dic = {'name'; 'alex'}
# tu = (2, 3, 4'' 6 )
逻辑错误:
# num = int(input('请输入数字'))
# dic = {'name': '海狗', 'age': 18}
# dic['hobby']
2.什么是异常?
代码发生异常之后,程序就会中断!
3.异常处理
当代码出现异常时,通过某种方式不让程序中断,合理的跳过去.
4.为什么要有异常处理?
1.用户体验良好
2.使代码更有健壮性、容错性
5.异常处理的两种方式
5.1 if判断
利用if 只能处理简单的异常,如果异常需要考虑的方面比较多,不合适
5.2 try
利用try的方式进行异常处理,try会尝试执行里边的代码
# 进行一个try举例;
# try:
# num = int(input('>>>')) # 出现ValueError错误之后,直接跳转到except语句.
# print(111)
# except ValueError:
# print(666)
# try:
# dic = {'name': '二狗'}
# print(dic['age'])
# num = int(input('>>>')) # 出现ValueError错误之后,直接跳转到except语句.
# print(111)
# except ValueError:
# print(666)
结构一:
单分支
# try:
# num = int(input('>>>')) # 出现ValueError错误之后,直接跳转到except语句.
# dic = {'name': '二狗'}
# print(dic['age'])
#
# print(111)
# except ValueError:
# print(666)
结构二:
多分支
# try:
# num = int(input('>>>')) # 出现ValueError错误之后,直接跳转到except语句.
# dic = {'name': '二狗'}
# print(dic['age'])
# l1 = [1, 2]
# print(l1[100])
# print(111)
# except ValueError:
# print('输入的有非数字元素')
# except KeyError:
# print('没有此键')
# except IndexError:
# print('没有此下标')
# print(666)
结构三:
万能异常:处理所有Python识别的异常
什么时候用万能,什么时候用多分支?
如果你对错误信息不关心,只是想要排除错误,让程序继续运行
如果你对错误信息要进行明确的分流,让你的程序多元化开发
# try:
#
# dic = {'name': "二狗"}
# # print(dic['age'])
# l1 = [1, 2]
# print(l1[100])
# print(111)
# for i in 123:
# pass
#
# except Exception as e:
# print(e)
# print(666)
# 之前的写法:
# num = input('输入序号')
# if num.isdecimal():
# num = int(num)
# if 0 < num < 5:
# if num == 1:
# pass # func()
# else:
# print('请输入数字')
# def func():
# pass
#
# def func1():
# pass
#
# dic = {
# 1: func,
# 2: func1,
# }
#
# try:
# num = int(input('请输入序号'))
# dic[num]()
# except ValueError:
# print('请输入数字')
# except KeyError:
# print('请输入范围内的序号')
结构四:
多分支 + 万能异常
# def func():
# pass
# def func1():
# pass
# dic = {
# 1: func,
# 2: func1,
# }
#
# try:
# num = int(input('请输入序号'))
# dic[num]()
# except ValueError:
# print('请输入数字')
# except KeyError:
# print('请输入范围内的序号')
# except Exception:
# print('程序出现意料之外的错误....')
结构五: try else finally
else:如果没有出现异常,则执行else
except:必须依赖try, else:必须依赖except和try
finally:只是依赖于try
finally 在异常出现之前,执行finally语句
应用:
1.用在关闭数据库连接,文件句柄关闭,数据保存,用到finally
可以在finally后边用with open 将文件写进去
2.在return结束函数,执行finally代码
# try:
# dic = {'name': '二狗'}
# # print(dic['age'])
# l1 = [1, 2]
# # print(l1[100])
# print(111)
# except KeyError:
# print('没有此键')
# except IndexError:
# print('没有此下标')
# else:
# print('如果没有出现异常则执行这里')
# finally:
# print('finally 666')
# except 必须依赖于try, else必须依赖于except和try
# finally只是依赖于try.
# finally : 在异常出现之前,执行finally语句.
# try:
# dic = {'name': '嘉欣'}
# print(dic['age'])
# l1 = [1, 2]
# print(l1[100])
# # except KeyError:
# # print('没有此键')
# # except IndexError:
# # print('没有此下标')
# # except IndexError:
# # pass
# # print(111)
# finally:
# print('finally 666')
# finally 用在 关闭数据库连接,文件句柄关闭,数据保存等,用到finally.
# with open('test1',encoding='utf-8',mode='r+') as f1:
# try:
# for i in f1:
# print(i)
# if ....:
# finally:
#
# f1.close()
# 在return结束函数之前,执行finally代码.
# def func():
# try:
# print(111)
# return 666
# finally:
# print(222)
# print(func())
结构六:
主动触发异常
raise ValueError (出现了value错误)
结构七:
断言,展示出一种强硬的态度
assert 条件,assert a == b
条件不成立直接报错 AssertionError
# assert 条件
# name = 'alex'
# n1 = input('请输入:')
# assert name == n1
# print(111)
# print(222)
结构八:
自定义异常:
Python中给你提供的错误类型有很多,但是不是全部的错误
Python会报所有错误信息,但是没有错误的类型
input() 可以使用异常捕获,别的地方慎用
# class LeError(BaseException):
#
# def __init__(self,msg):
# self.msg=msg
# def __str__(self):
# return self.msg
#
# try:
# # 三行
# raise LeError('socket.connent.....')
# except LeError as e: # e = LeError('类型错误')
# print(e)
# socket.connent .....
# EOFError
# ValueError
原文地址:https://www.cnblogs.com/liubing8/p/11347963.html
时间: 2024-11-05 16:40:24