晚上十一点,电脑屏幕那冷光直愣愣地往脸上糊。程序又吐出一串红得扎眼的报错。搁以前,我准烦躁得一把合上笔记本,心里暗骂一句“今天算是彻底废了”。后来硬着头皮翻出一本教Java的书,里头专门掰扯过“异常处理”这一章。作者没整那些虚头巴脑的,就甩出一句大实话:报错根本不是系统崩盘,是程序在跟你交底,说某个预设的假设没成立。你得把它接住,顺手处理了,然后让程序接着往下溜达。代码这东西,比人诚实多了。它不跟你玩情绪拉扯。
这话跟根细针似的,不轻不重地扎了我一下。从小到大,谁没被按着“一次做对”的规矩练过?考试非得图个满分,上班恨不得零失误。发个朋友圈怎么了?配图文案都得抠半天。怕“异常”,怕计划外那点岔子,总觉得一旦脚下一滑,整个人生就得当场蓝屏。可书里后半句接得实在:所有实例,都得靠反复上机调试,直到屏幕上蹦出对的结果。调试这事儿,压根不是条直线。卡壳。倒带。盯着满屏红字,一点点把逻辑捋顺。我觉得吧,可能大多数人根本耐不住这种“倒带”的折磨。总想着速成。但程序开发偏偏就吃这套笨功夫,谁也没法跳过测试直接上线。
过日子其实一个德行。咱们总幻想成长是条平滑向上的曲线,结果现实啪啪打脸,全是突如其来的断点。谈崩的恋爱。没考上的学校。突然卡壳的项目。生活塞给你的“异常”,从来不打招呼。头一遭碰上,谁不是一边自责一边想躲,怪自己逻辑没写对?但转念一想,出错说不定才是日常。书里教“化抽象为具体”,把绕嘴的理论拆成能跑通的代码。咱们过日子不也这套路?那些听起来宏大的目标,落到地上,非得拆成一个个极小的动作不可。做岔了,改。跑不通,重来。别急着向谁证明。能稳稳当当接住下一次报错,就算往前挪了步。当然,这话听着通透,真落到自己身上,谁还没个心态崩的时候?大概也就是在崩溃边缘多撑了半口气而已,未必真能立马看开。
坦白讲,我以前特怕那种失控的劲儿。总觉得只要脑回路够严密,就能绕开所有坑。直到前两年工作节奏突然被掀翻,我耗了大半年才把散架的状态一点点拼回来。那阵子,我不再死磕“立刻跑通”,学着照书里的法子,先接住自己的情绪,再拿放大镜排查。瞅见精力分配乱了套,就重新排优先级。发觉沟通方式太生硬,就换种软乎的语气再试。折腾一圈才明白,日子压根没什么标准答案,就是不断试错的循环。只是现在回头看,那大半年与其说是“拼回来”,不如说是学会了跟烂摊子共存。毕竟生活又不是IDE,哪有什么一键重构,全是手动打补丁。
书里还扯过“多态”这词儿。同一个接口,能跑出不同的实现方式。人撞上墙的时候,不也这样?撞了墙怎么办?硬顶的有,绕道走的有。也有人干脆原地坐下,等风停。哪有什么绝对正确的处理法子,只要能接着往前走,都算没白活。咱们总琢磨着把自己打磨成零bug的代码。可说不定,允许自己打补丁,允许偶尔抛出异常,才是更接地气的运行状态。至少在我看来,完美运行那套多半是卖课的人编出来的神话。普通人能稳住不宕机,就已经算挺过来了。
屏幕上的进度条终于跑完。绿色的输出结果安安静静躺在终端里。没喊口号,就是长长吐出一口浊气。窗外的城市早歇了,只剩几盏路灯还亮着。我想,咱们这辈子,大抵就是在不断捕获异常,然后默默点下继续。别急着找什么终极解法。能陪着那个满身补丁的自己,一步步跑完下一段,也就够了。这事儿急不来。慢慢熬吧。