栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 异常处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号