Python 异常处理


# 结构一:单分支

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值