《代码大全 2》观后感(六):错误处理 —— 代码的 “安全气囊”

news/2025/11/7 18:49:46/文章来源:https://www.cnblogs.com/Ou20051216/p/19197717

过去写代码时,我总觉得 “错误处理” 是 “可有可无的附加项”—— 只要自己测试时没遇到报错,就不用写 try-catch,不用判断空值。但读了《代码大全 2》中 “错误处理” 的章节,才意识到错误处理是代码的 “安全气囊”,能在意外发生时避免程序崩溃,甚至减少线上故障。
书中有个比喻很形象:“错误处理就像汽车的安全带,平时用不上,但关键时刻能救命”。我曾开发过一个 “导入 Excel 数据” 的功能,当时只测试了 “格式正确的 Excel”,没处理 “空文件”“格式错误”“数据缺失” 这些情况。上线后,有用户上传了一个空 Excel,程序直接抛出异常崩溃,还导致整个页面卡住。后来按照书中的建议,我加了三层防护:一是判断文件是否为空,二是验证 Excel 格式是否正确,三是对每一行数据做非空检查,并且在每个环节都返回明确的错误提示(比如 “请上传非空的 Excel 文件”“第 5 行‘姓名’列不能为空”)。修改后,即使出现错误,程序也能正常运行,用户也知道该怎么修正问题。
书中还强调,错误处理要 “具体”,避免 “吞掉错误” 或 “模糊提示”。比如不要只写 “try { ... } catch (Exception e) { return null; }”—— 这样出了错,既不知道错在哪,也没法排查;而应该捕获具体的异常(比如 FileNotFoundException、IOException),记录详细的错误日志(包括错误位置、参数信息),并返回清晰的提示。我之前写 “调用第三方接口” 的代码,用了笼统的 Exception 捕获,有一次接口返回 500 错误,日志里只写了 “调用接口失败”,查了半天也没找到原因 —— 是参数错了?还是接口超时了?后来我按照书中的方法,捕获了 HttpException,记录了请求参数、响应状态码、错误信息,很快就定位到是 “参数格式不符合接口要求”。
现在我写代码时,会主动想 “这里可能会出什么错?”—— 用户输入错误、接口调用失败、数据为空、权限不足…… 然后针对性地做处理。错误处理虽然会增加几行代码,但能让程序更健壮,减少线上故障。《代码大全 2》教会我的,是 “敬畏错误” 的态度 —— 编程不是 “追求不出错”,而是 “做好出错的准备”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在龟骨的第二次课的讲解

本节课将围绕环境搭建→效率工具→目标管理三大模块,帮你从“新手”到“规范开发者”。效率加速器:快捷键实战 底层逻辑:快捷键的本质是减少鼠标操作 基础快捷键 Ctrl + C/V/X:复制/粘贴/剪切(举例:写文档时复制…

P5610 解题报告

P5610 解题报告 简要题意 一个长为 \(n\) 的非负整数序列 \(a\),支持以下两个操作:1 l r x:把区间 \([l,r]\) 中所有 \(x\) 的倍数除以 \(x\)。 2 l r:查询区间 \([l,r]\) 的和。本题强制在线。 数据范围: \(1\le…

fcitx5里有趣的东西

apt source fcitx5-pinyin 即可飞速下载。 emoji.txt ⛑ anquanmao 🪁 aoxiang 🌏 aozhou 🕗 badian ... chaizi.txt 亖 erer 亗 shaner 亝 leier 什 renshi 仂 renli 仃 rending 仄 changren

自定义MCP Server

1. MCP Server 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency>&l…

英语_错题集_25-11

**答案:** annoying **解析:** 这里需要填入一个形容词来描述“我的小弟弟”的特点。动词 “annoy” 意为“使烦恼”,其形容词形式 “annoying” 表示“令人烦恼的”,符合句意。句子意思是:“我的小弟弟有时真的很…

Ai元人文随想:守护时光的印记

Ai元人文随想:守护时光的印记 岐金兰 论古树保护的文化、生态与精神价值第一章:活态史诗——古树作为历史的无言见证者 在村口,在庙前,在深山幽谷之中,古树以一种超越人类纪年的姿态屹立着。它们不是普通的植物,…

浅谈模拟系列算法

模拟着火/模拟火灾算法 算法名称:模拟火退 研究时间:2023年10月17日19点 算法引入:发现了模拟退火算法中出现的正确性和复杂度问题,故研发模拟火退算法进行优化。 注意到模拟退火算法中出现了较为严重的正确性问题…

第三十六篇

今天是11月7号,今天没课

Ai元人文随想:三值纠缠中的人文关怀

Ai元人文随想:深入探讨三值纠缠思维中蕴含的深刻人文关怀 岐金兰 灵魂的测量仪:三值纠缠思维中的人文之光 在技术理性日益主导、算法试图将人类简化为一行行代码的时代,一种名为“三值纠缠”的思维模型,却悄然进行…

R语言实现多组样本两两t检验的完整教程

t检验的核心思想是通过样本均值与方差的比较,评估两个总体均值是否存在显著差异。当有三个或更多组数据时,单次t检验已不再适用,因此通常的做法是先进行方差齐性检验与单因素方差分析(ANOVA),如果总体差异显著,…

实用指南:TensorFlow深度学习实战(40)——图神经网络(GNN)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2023QDEZ男人八题赛后总结

这里是QDEZ男人八题赛后总结博客。 这是QDEZ OI 出题组的最后一场公开赛,作为行将就木的退役选手,在此再次提醒大家: 今年欢笑复明年,不知退役在眼前! 比赛于线下机房举行,本次有___人参加比赛,感谢大家的参与。…

学习差的孩子,有必要用学习机吗?

学习差的孩子用学习机是智商税?松鼠AI双线方案给出提分答案 一、打破偏见:学习成绩差的学生,更需要专业 AI 学习机 “学习机是智商税” 的说法,本质上是对 “单一工具依赖” 的否定,而非对 AI 教育价值的否定。对…

CSP-S2023游记

赛前第三天: 白天狂摆一天文化课,整个人都进不到学习状态里,摆摆摆摆摆,晚上在机房里进行了 CSP 动员大会,大家都写下了自己祝福的话或者是自己挂分的秘籍,为了让这些话有灵魂,我加上了两句曹学(最后这两句曹学…

2025苏州驾驶证培训推荐榜:摩托车驾驶证培训、A2驾驶证培训、大车A1驾驶证培训、大车B2驾驶证培训,省心学车选这些

在苏州,驾驶证培训已成为成年人提升生活技能的热门选择,而规模适中、专注服务的小体量培训机构,因教学灵活、关注度高更受青睐。2025 年最新盘点,精选口碑突出的小型驾驶证培训机构,其中苏州从欢机动车贸易有限公…

2025佛山钢管厂家推荐榜:防腐钢管、大口径钢管、螺旋钢管工厂采购选型不踩坑

在工业制造、建筑装修、机械配套等领域,钢管作为基础材料的需求持续稳定,而小型钢管企业凭借灵活适配、精准服务的优势,成为众多采购方的优选。为帮助行业伙伴精准筛选靠谱合作方,本文整理 2025 年优质小型钢管企业…

不谈离散数学基本定理

本文半娱乐向半学术向 先列出定理:1.对于 \(\forall x,y \in \mathbb{Z},x<y\),有 \(x+1\le y\)2.\(\forall a,b\in\mathbb{Z},a<b,x>1\),则有 \(x^a<x^b\)3.\(\forall i\in\{1,2\cdots,n\},a_i\in\mat…

现代Linux网络命令简介

都是字符界面的、很小的。 iftop: /usr/sbin/iftop display bandwidth usage on an interface by host nethogs: /usr/sbin/nethogsNet top tool grouping bandwidth per process nload: /usr/bin/nloaddisplays the c…

深谈王书童变换

首先大家肯定都听过这个名字,毕竟发明者比较著名,他就是和鲍林,泡利三人能得三次诺贝尔奖的著名化学家王书童,不过他这个变换更多的应用于数学领域,所以大多人不太熟悉这个定理,就让我来给大家打通一下! 首先先…

众所周知,高中课内物理需要解微分方程

众所周知,解微分方程作为一种常用的方法是每一个高中生都要掌握的,所以物理课上讲二阶微分方程一点问题都没有吧。 著名物理老师 zjz 曾经说过:微积分,很重要,我带大家推一遍。 所以他就带大家推了一遍。 课内物理…