Python面向对象 杂篇(后记)

Python异常处理详解
本文详细介绍了Python中的异常处理机制,包括异常的概念、如何使用try/except语句捕捉和处理异常,以及常见异常类型如AttributeError、IOError等。此外,还讲解了如何使用else和finally语句增强代码的健壮性和可读性。

异常处理

什么是异常:
        我们在调试程序时,常常会因为各种报错信息导致程序无法运行,异常也是一个对象,用来表示错误。我们可以捕捉异常,并做相应处理,从而增加代码的友好程度。
异常处理:
        捕捉异常可以使用try/except语句。当代码运行过程中遇到try语句时,会先执行其中的代码,如果正常执行,则跳过except语句继续向下执行;如果触发异常,则执行except语句,由except语句进行异常处理。
try:
    pass
except Exception:
    pass
异常的种类:
python中的异常非常多,每种异常都可以找到专门的异常来处理。这里仅列举一些常见异常
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError 语法错误
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
RuntimeError 一般的运行时错误

当我们指定异常的种类时,则只能处理相应的异常,其他种类的异常捕获不到

dir = {'k1':'v1','k2':'v2'}
try:    
    a = dir['k3']
    print(a)
except KeyError:   #捕捉到相应异常
    print('no such key')
>>>
no such key
a='zhang'
try:
    int(a)
except TypeError: #指定的异常种类不正确,无法捕捉异常
    print('error')
>>>
Traceback (most recent call last):
  File "C:/Users/issuser/PycharmProjects/Python/day9/socket client.py", line 11, in <module>
    int(a)
ValueError: invalid literal for int() with base 10: 'zhang'
写程序时,有时候要考虑处理多个异常,可以写多个except,不过要注意匹配的异常范围一个是从小到大,以免无法捕获相应的异常。
  万能异常:python中还有一个异常可以捕获所有的异常,它就是Exception,可以捕获所有的异常。
a = 'zhang'
try:
    int(a)
except TypeError:
    print('type error')
except Exception:   #可以捕获所有异常,保证程序运行
    print('other error')

 在异常中,我们还可以使用else,如果没有触发异常,则继续执行else代码。如果触发异常,则处理异常,不再执行else。

try:
    # 主代码块
    pass
except KeyError,e:
    # 异常时,执行该块
    pass
else:
    # 主代码块执行完,执行该块
    pass
finally:
    # 无论异常与否,最终执行该块
    pass

 try/finally形式,当执行完try块后,无论是否出发异常,都执行finally块。

try:
    # 主代码块
    pass
except KeyError:
    # 异常时,执行该块
    pass
else:
    # 主代码块执行完,执行该块
    pass
finally:
    # 无论异常与否,最终执行该块
    pass

 除了捕获代码异常外,还可以主动触发异常(实在想不起有什么鸟用)

try:
    raise IndexError('error')  #raise主动触发异常,注明异常的种类
except TypeError:
    print('type error')
except IndexError:            #相应的异常捕获主动触发的异常
    print('index error')
>>>
index error

 断言:

# assert 条件
 
assert 1 == 1    #条件为真时,返回空值
 
assert 1 == 2    #条件为假时,返回异常

 

反射

 

转载于:https://www.cnblogs.com/ernest-zhang/p/5635052.html

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值