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

相关内容

热门资讯

盘中突发,黄金首饰板块跳水!0... 1月29日,A股三大指数开盘涨跌不一。盘面上,贵金属、有色金属、石油、银行、培育钻石、民爆概念等板块...
天量存款到期调查:百万保单增加... 来源:@华夏时报微博 华夏时报记者 李明会 北京报道 “最近到期的定期存款可多了。”近日,某头部城...
原创 中... 1月17日,特朗普宣布成立加沙和平委员会,这场动静不小的宣布刚过了三天,中国便收到了美国的邀请函。然...
王府井:转型阵痛中主动求变 创... 2026年1月28日,王府井集团披露2025年度业绩预亏公告。公告内容显示,为应对零售行业市场变化,...
依旧是混沌期的高低切换加超跌轮... 大盘周四放量震荡收红,收盘4157.98点,成交32300亿,外资成交3972亿,板块上白酒,油气,...
海南大消息!融资客扫货8股 近日,海南省发展改革委印发《海南省2026年重大项目投资计划》。 1月29日,A股全天震荡分化,三...
国泰海通:白银价格中长期仍然受... 来源:智通财经网 国泰海通证券发布研报称,白银价格近期飙升创新高,主因“工业和金融”需求共振。其商品...
泰康基金老将卷入争议!科技股风... 作者 | 郑理 来源 | 独角金融 泰康基金管理有限公司(下称“泰康基金”)桂跃强,一位拥有14年金...
天晴了雨停了,孙正义又行了? 出品I下海fallsea 胡不知 2026年1月28日,一则消息炸穿了全球科技投资圈:软银集团正与...
净利腰斩、市值万亿,特斯拉在涨... 作者 | 定焦One 金玙璠 一边是净利润腰斩,一边是股价创新高。 这就是特斯拉2025年的状况。...
飞天茅台连日售罄,有人用外挂抢... 在需求大增且产品连日售罄的情况下,有人开始动用“外挂”抢飞天茅台。 1月29日,南都湾财社-酒水新消...
地球磁场或揭示暗物质真相,科学... 你有没有想过,宇宙中有那么多神秘的事物,而暗物质就是其中之一。它大约占据了我们宇宙的四分之一,但我们...
阳光诺和收购同一标的两次失败 ... 2026年1月27日,阳光诺和(688621.SH)发布公告,宣布正式终止以发行股份及可转换公司债券...
特宝生物:获得第九批国家级制造... 上证报中国证券网讯(叶子申 记者 俞立严)1月29日,特宝生物发布公告称,公司近日获得工业和信息化部...
002231,拟终止上市,明天... 1月29日晚,*ST奥维(002231)发布公告,披露2025年度业绩预告,公司不仅面临全年持续亏损...
半导体设备板块震荡调整,指数跌... 截至收盘,中证云计算与大数据主题指数上涨0.4%,中证芯片产业指数下跌4.1%,中证半导体材料设备主...
7 个月 5 个人工智能 IP... 自 2025 年底至 2026 年初的短短 10 天内,启明创投在 AI 领域连续迎来 3 个 IP...
重庆顺博铝合金股份高管王真见、... 蓝鲸新闻1月29日讯,近日,重庆证监局发布行政监管措施决定书,剑指重庆顺博铝合金股份有限公司董事长王...
SpaceX IPO或将于20... 据报道,SpaceX正在与四家华尔街主要银行合作,准备在2026年进行首次公开募股(IPO),这可能...
商务部:中芬双方企业签署多项商... 1月29日,商务部召开例行新闻发布会。 商务部新闻发言人何咏前表示,近日,芬兰总理奥尔波成功访华,中...