# 结构一:单分支
try:
num = int(input('请输入数字:')) # 出现ValueError错误之后,不执行下面语句,直接跳转到except语句.
print(num)
print('Hello World')
except ValueError:
print('您输入含有不是数字的字符了')
print('到这里了')
# 结构二:多分支,哪个类型报错了就停在那,不执行try下面的代码,执行错误类型的代码except
try:
num = int(input('请输入数字:'))
print(num)
dic = {'name': 'albert'}
print(dic['age'])
print('Hello World')
lst = [i for i in range(10)]
print(lst[101])
print(777)
except ValueError:
print('您输入含有不是数字的字符了')
except KeyError:
print('此键不存在!!')
except IndexError:
print('超出列表下标!!')
print('到这里了-2')
# 结构三:万能异常Exception,能处理Python所有出现的异常
try:
dic = {'name': 'albert'}
print(dic['age'])
print('Hello World')
lst = [i for i in range(10)]
print(lst[101])
print(777)
except Exception:
print('出现错我啦')
# 或者这样 把错误类型打印出来
try:
lst = [i for i in range(10)]
print(lst[101])
dic = {'name': 'albert'}
print(dic['age'])
print('Hello World')
print(777)
except Exception as e:
print(e) # list index out of range
"""
什么时候用万能? 什么时候用多分支?
如果你对错误信息不关心,只是想要排除错误让程序继续运行>>>用万能异常.
你对错误信息要进行明确的分流,让你的程序多元化开发>>>用分支异常
"""
# 结构四: 多分支+万能异常
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
"""
except 必须依赖于try, else必须依赖于except和try
finally只是依赖于try.
"""
try:
dic = {'name': 'albert'}
print(dic['age'])
l1 = [1, 2]
print(l1[100])
print(111)
except KeyError:
print('没有此键')
except IndexError:
print('没有此下标')
else:
# 如果没有出现异常才会执行else
print('没出现错误啊,good')
finally:
# 无论异常与否, 都会执行finally, 通常是进行清理工作
print('finally 666')
# finally : 在异常出现之前,执行finally语句.
"""
1、finally 用在 关闭数据库连接,文件句柄关闭,数据保存等
2、在return结束函数之前,执行finally代码.
"""
try:
dic = {'name': '嘉欣'}
print(dic['age'])
l1 = [1, 2]
print(l1[100])
finally:
print('finally 777')
def func():
try:
print(111)
return 666
finally:
print(222)
print(func())
# 结构六: 主动触发异常.
raise ValueError('出现了value错误')
# 结构七: 断言: assert+条件 , 展现出一种强硬的态度.
assert 1 == 2
print(111)
# 结构八:自定义异常 ,python中给你提供的错误类型很多,但是不是全部的错误.
class MyError(BaseException):
def __init__(self,msg):
self.msg=msg
def __str__(self):
return self.msg
try:
raise MyError('类型错误')
except MyError as e: # e = MyError('类型错误')
print(e)
Python 异常处理
最新推荐文章于 2024-05-06 10:00:00 发布