python--异常处理

异常

复制代码
lis = ['zouzou', 'jack', 'bob']
name = {'001': 'hello'}
try:
    print(lis[3])
    print(name['002'])

except KeyError as e:  # 将具体的错误信息赋值给e
    print('没有这个key:', e)

except IndexError as e:
    print('列表操作错误:', e)
复制代码

结果

列表操作错误: list index out of range

出一个错就不往下执行了

也可以这样写

lis = ['zouzou', 'jack', 'bob']
name = {'001': 'hello'}
try:
    print(lis[3])
    print(name['002'])

except (KeyError, IndexError) as e:
    print('没有这个key:', e)

抓住所有错误

lis = ['zouzou', 'jack', 'bob']
name = {'001': 'hello'}
try:
    print(lis[3])
    print(name['002'])
except Exception as e:  # 基本上能抓住所有异常,缩进等 一些异常抓不了
    print('出错了,错误为:', e)

结果

出错了,错误为: list index out of range
复制代码
lis = ['zouzou', 'jack', 'bob']
name = {'001': 'hello'}
try:

    open('test.txt')

except IndexError as e:
    print('列表错误:', e)

except KeyError as e:
    print('key错误:', e)

except Exception as e:  # 上面的错误都不是时执行这里的
    print('未知错误')
复制代码

结果

未知错误

else在没有异常时执行

复制代码
lis = ['zouzou', 'jack', 'bob']
name = {'001': 'hello'}
try:

    print(lis[0])

except IndexError as e:
    print('列表错误:', e)

except KeyError as e:
    print('key错误:', e)

except Exception as e:  # 上面的错误都不是时执行这里的
    print('未知错误', e)

else:
    print('一切正常')  # 没有异常时执行
复制代码

结果:

zouzou
一切正常
复制代码
lis = ['zouzou', 'jack', 'bob']
name = {'001': 'hello'}
try:

    print(lis[6])

except IndexError as e:
    print('列表错误:', e)

except KeyError as e:
    print('key错误:', e)

except Exception as e:  # 上面的错误都不是时执行这里的
    print('未知错误', e)

else:
    print('一切正常')  # 没有错误时执行

finally:
    print('不管有没有错都执行')  # 不管有没有错都执行,无论如何都会执行 操作系统资源归还的工作
复制代码

结果

列表错误: list index out of range
不管有没有错都执行

自定义异常

复制代码
class LfjException(Exception):  # 继承异常的基类
    def __init__(self, msg):
        self.message = msg

    def __str__(self):
        return self.message


try:
    raise LfjException('我的异常')

except LfjException as e:
    print(e)  # 打印的是self.message的值,self.message这 里的值是raise LfjException('我的异常'),括  号里的值
复制代码

结果:

我的异常

raise主动抛异常

try:
    num = int(input('>>>'))
except Exception:
    print('在出现了异常之后做点儿什么,再让它抛异常')
    raise  # 原封不动的抛出try语句中出现的异常

 

posted @   邹邹很busy。  阅读(59)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示

目录导航