Code review也是一个充满乐趣的事情,在一次Code review中,发现了如下代码。
try {
f();
} catch (RuntimeException e) {
throw new RuntimeException(e);
}
百思不得其解啊。为什么要捕捉一个RuntimeException又把它抛出去呢。在和原作者充分沟通后,明白了这段代码的来龙去脉。
首先,由其他地方的异常日志推断出这里调用方法f的时候,系统抛出了异常。但是,在错误日志中没有找到关于该异常的日志,于是怀疑异常没有被异常处理器捕捉到,咨询了其他同事,最后确定的方案为参考其他系统的处理方式,在这一层先捕捉住,重新包装一下再抛出去,这样处理的话则异常处理器就可以捕捉住该异常了。
我的问题是,如果异常处理器不能捕捉到原有的异常的话,如此包装再抛出一样是捕捉不到的啊。同事也同意我的看法,但是因为有其他同事的意见在先,以及在其他系统中存在类似的代码,所以就鬼迷心窍的把这段自己都不怎么相信的代码提交了。
事情的真相是这样的。
其他系统的代码如下,该处转换了异常的异常信息。
try {
f();
} catch (RuntimeException e) {
log(e);
throw new RuntimeException("调用方法f发生异常", e);
}
而在错误日志中找不到异常的原因,是因为日志对象的toString方法有一处手误。
public String toString() {
StringBuilder sb = new StringBuilder();
// 把对象信息添加到sb对象中。
return super.toString();
}
为什么同事会提交自己都不怎么相信的代码呢?原因如下:
1 轻信了同事的意见。
2 虽然自己也对该方案有所怀疑,但是看到其他系统有类似的代码,就误以为该代码是正确的。
3 没有测试。
事情虽小,教训很多。
该文只是记录软件开发中的一段往事,并不针对任何人。很多软件工程师都会有犯傻的时候,而且所犯的错误低级的让人可笑。重要的不是我们犯了多么低级的错误,重要的是我们从一个个事后人人都认为低级到极限的错误中能得到什么。
分享到:
相关推荐
在语音处理中,谱重构对于语音识别、语音合成以及噪声抑制等应用至关重要。 在MATLAB脚本“fft_ifft.m”中,很可能是先从音频文件中提取MFCC,然后通过逆过程将这些MFCC转换回幅度谱,再应用IFFT以重构原始的语音...
标题中的"【EMD重构】.rar"指的是包含EMD重构过程的压缩文件,而"EMD重构函数"是指在处理EMD分解后的IMF分量时使用的特定函数。"IMF变量重构"则是指将分解得到的各个IMF重新组合成原始信号的过程。"tomorrowi4n"可能...
标题中的“用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构_源码.rar.rar”揭示了该压缩包文件包含的是与信号处理相关的源代码,特别是涉及了三种重要的信号分解方法:Empirical ...
基于接收矩阵的稀疏重构,L1-SVD,阵列信号处理方面
《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...
配电网重构是电力系统领域中的一个重要研究课题,它涉及到电力系统的稳定运行与经济效率。配电网重构的目标是在满足一系列约束条件下,通过改变开关状态,优化网络结构,以达到提高供电可靠性、降低运营成本、改善...
在本文中,我们将深入探讨基于Matlab的压缩感知(Compressive Sensing,简称CS)重构算法的实现。压缩感知是一种理论先进的信号处理方法,它允许我们以远低于奈奎斯特定理所要求的采样率捕获信号,并能恢复原始信号...
在IT行业中,尤其是在医疗影像处理领域,三维重构技术扮演着至关重要的角色。"NewPrjName.rar" 是一个与三维医学图像重构相关的项目文件压缩包,它涉及到的是使用C++编程语言来实现这一复杂的计算过程。这个项目的...
资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构,实现故障诊断 源码说明: 全部项目源码都是经过...
CS_STOMP(Signal Transform Optimized Matching Pursuit,信号变换优化匹配追踪)是一种在信号处理领域,特别是压缩感知(Compressed Sensing, CS)中的重构算法。压缩感知理论是近年来发展起来的一种突破性技术,...
这个压缩包中的"第13章 MATLAB图像重构实战"可能包含了一系列的MATLAB脚本和函数,用于演示如何使用MATLAB实现fanbeam变换。这些脚本可能包括数据读取、预处理、fanbeam投影、反投影以及图像重构等步骤。在学习和...
重构__改善既有代码的设计_高清 绝对清晰
经验模态分解(Empirical Mode Decomposition,简称EMD)是一种强大的数据分析技术,尤其...通过对这些资源的深入理解和实践,我们可以更好地掌握EMD技术,并将其应用到实际问题中,实现非平稳信号的有效分析和重构。
在IT行业中,动态重构是一种先进的软件工程实践,它允许开发者在程序运行时对代码结构进行修改,以提高软件性能、可维护性和可扩展性。在标题"top.rar_动态重构_动态可重构_动态重构"中,我们可以推断这是一个关于...
在图像处理领域,小波分析是一种非常重要的工具,它能够对图像进行多尺度、多分辨率的分析,从而在不同层次上提取图像特征。本项目主要关注的是使用...对于学习和研究图像处理的人员来说,这是一个很好的实践案例。
在提供的压缩包文件名 "重构Python" 中,我们可能找到实现这些功能的源代码文件,包括算法的核心逻辑、输入输出处理、测试用例以及可能的性能分析脚本。 总的来说,这个项目旨在利用Python实现一个高效的OMP字典...
在电力系统领域,配电网重构是一项关键的技术,其目的是通过改变配电网络的连接方式来优化网络性能,提高供电可靠性、经济性和效率。本资源“reconfiguration_配电网_配电网络重构_reconfiguration_配电网重构_配电...
牛顿拉普逊法就算配电网重构的潮流程序,结构清晰易懂。
这个压缩包中的源码很可能是实现了以上步骤的MATLAB函数或脚本,对于学习和实践互信息和相空间重构的学者来说,这是一个宝贵的资源。用户可以通过阅读和运行这些代码,理解相关算法的原理,并将其应用到自己的项目中...