A Philosophy of Software Design读书笔记——异常处理
admin
2024-02-19 09:28:39
0

软件复杂度的最重要来源是异常处理

为什么异常增加复杂度

异常来源:

1、方法调用者提供错误的参数

2、无法完成请求,比如IO异常

3、分布式系统中不可靠的网络

4、代码中监测到bug,不一致的地方,或者代码正常情况下不应该处理的情况等

异常处理代码比正常流程代码更难写。

异常处理代码可能带来更多的异常

太多的异常

现代编码倾向于尽可能的抛出异常,导致异常太多。

倾向于把异常抛出给调用者,让调用者处理异常,避免中断正常处理流程,但是这会增加系统复杂度。

异常也是接口的一部分,抛出异常简单,处理异常很难,最好的解决方法之一:是尽可能的减少异常。

定义异常

最好的减少复杂度方法是把异常排除在接口之外

例子:windows系统中删除文件

如果文件被使用,windows中无法删除该文件,用户必须搜寻打开该文件的进程,然后kill掉,才能删除文件。

Unix这时会标记文件被删除,然后立即返回成功。

作者赞赏Unix的做法,它不会向用户抛出异常,包括删除者和正在使用该文件的人

屏蔽异常

减少异常复杂度的第二个方案是:把异常尽可能在底层模块解决,这样高层模块就不会感知到这些异常,好的例子:TCP,处理丢包、乱序、拥塞问题。

异常合并

减少异常复杂度的第三个方案是:异常合并,在一处处理较多的异常。这样把多个异常合并为一个,调用者只需要集中处理这一个异常。

Crash

减少异常复杂度的第三个方案是:系统crash,如果异常无法处理或者不值得处理,简单的方式就直接crash,例如OOM错误

把特殊case抽象出来

特殊case一般都在if中,如果太多,会导致代码难懂并且容易出bug。特殊case应该尽可能的避免,最好的方式是在设计正常case时自动的处理特殊case

相关内容

热门资讯

金属3D打印火箭厂商Rocke... 长三角G60激光联盟导读:国外的金属3D打印火箭厂商Rocket Lab,发展速度之快就像坐上了火箭...
嘴歪眼斜是什么病前兆 嘴歪眼斜一般情况下是面瘫、脑卒中、脑梗死等疾病的前兆。 1、面瘫:通常是因为感染因素,也有可能是因为...
上海建工:获政府补助3.48亿... 根据《企业会计准则第16号——政府补助》相关规定,公司将上述与收益相关的政府补助确定为“其他收益”并...
李彦宏最大IPO来了 窗口期。 作者/吴琼 报道/投资界PEdaily “份额抢不到。” 这一幕正在出现在昆仑芯身上。自年...
万全区召开传统制造业数字化升级... 来源:厚德万全 7月3日,万全区召开传统制造业数字化升级与电子商务发展座谈会。区政协、区商务局、...
原创 德... 在全球经济的复杂棋局中,近期德国总理默茨对人民币汇率的言论引发了不小的波澜。他声称人民币“低估了30...
煤科先锋丨从戈壁“小白”到攻坚... (来源:中国煤炭科工集团) 2022年初夏,刚入职不到半年的田凤亮,第一次踏上新疆戈壁深处的露天矿。...
海归博士回国创业,一年狂飙4倍... 文 | 硅基象限,作者 | 张思 一个50后海归博士,扎进全球仅剩三个玩家的“冷门”芯片赛道,做到...
3个月融资35亿,清华90后博... 极佳视界创始人 黄冠 作者 | 邱鑫浩 来源 | 邱处机 投资人正在押注物理AI的到来。 据《投资界...
12亿天价豪宅成交,又一个神秘... 文丨金融八卦女 月月 卖豪宅“续命”的大佬,又多了一个。 近日,香港地产圈诞生了2026年以来最贵...
今夜,欧美全线拉升!黄金白银,... 【导读】平静的一晚 中国基金报记者 泰勒 大家好啊,今晚美股休假,一起简单看看海外市场的表现吧。 7...
上半年880只新基成立创历史新... 财联社7月4日讯(记者 封其娟)2026 年上半年的公募发行市场,呈现出一幅“分裂式繁荣”的图景。 ...
“摘星脱帽”后连收两个涨停 金... 本报记者 冯雨瑶 7月3日,金科地产集团股份有限公司(以下简称“金科股份”)股价开盘后再度涨停,这是...
三重需求叠加,国产半导体设备企... 记者 郑晨烨 最近几个交易日,股票市场上近期涨势迅猛的科技股群体出现了快速回调。但在产业层面,202...
颈肩腰腿疼得扛不住?博康诊所贾... 现代保健报讯:朔州入了夏,白天热辣辣的,屋里空调一开,冷热交替间,不少人的颈肩腰腿又开始闹别扭了。鄯...
一张“小桌子”何以撬动大消费?... (来源:上海普陀) “太开心了!我是从常州特地来的,一年一次的展会,当然要过来感受一下!”上午10时...
2026四川行|从“四川行”看... 2026中外知名企业四川行投资推介会举行期间,四川重磅推出1.8万亿元投资机会,精选180个重点项目...
每周股票复盘:平安银行(000... 截至2026年7月3日收盘,平安银行(000001)报收于10.29元,较上周的10.23元上涨0....
电商爆款仪器怎么玩?公模现货在... 电商爆款仪器的核心竞争力不是重金投入外观私模,而是极致的供应链测款速度。数据显示,能在5天内完成现货...
起步价2000万的杭州豪宅成交... 界面新闻记者 | 杨冰柯 界面新闻编辑 | 庄键 上半年杭州新房成交2.62万套,总价2000万...