码农的杀虫剂

上个项目实然想把遇到的BUG都记录到evernote里,未完

===========================================================

1.锋利割手,try catch之殇
try {
    Block of code to try
}
catch(err) {
    Block of code to handle errors

finally {
    Block of code to be executed regardless of the try / catch result
}



needRefresh原本处于一个闭包内,在某次重构后,UI库没有引用callback函数,更悲惨时没有任何错误提示。
通过调试发现问题出现在59429行。最后确认原因是重构代码后needRefresh引用失败,而caller抛出的错误刚好被try结构catch住了,而UI库直接把catch忽略了。
try为利器,一不小心却容易割伤自己

补充:chrome的控制台上有了方便捕抓异常的switch




2.离奇的括号不匹配----二分法砍代码



在Vim中使用%在匹配的{}之间跳转时,发现在某一级{}内的匹配不正确。
按照二分法,把代码一半一半的砍去,砍到最后发现原来Vim把注释中的{ 也算进去了才导致这{}个数之间的不匹配


3.莫名其妙的,输入焦点丢失了

正在输入数字,当输入的数字为7时,这时输入框失去了焦点,反而时外套的表的[当前选择行]跳动到了别的行,如从[9]行跳动到了[8]行,UI使用的是第三方的JS库



找到[当前选择行]的class为jqx-grid-cell-selected jqx-fill-state-pressed,在代码中搜索jqx-grid-cell-selected jqx-fill-state-pressed,把代码中它们出现的位置全都打上断点,当调试器停下时,从断点处开始往上分析运行到此处的代码路径,最后将问题锁定在96688行处的一个条件判断,似乎是这个this.incrementalSearch属性引发了焦点的问题






再来看一下文档,确认正是这个属性引起了焦点的跳动,设置这个属性为false,问题解决


4.UI刷新后还有留白

[备注]这一列没有指定width属性,原希望是[备注]这一列自动充满剩下的宽度空间,但在其次收缩[详情行]时,scrollbar hidden 了,是正确的,但还有留白是不正确的








5.离开这个环境

忘记了多少次遇到这种库的运行和自己期待的不一致的行为了,没有去挖掘库的代码找出是哪儿耦合,关联,嵌套了的问题,仿佛有如英文语感一般告诉你,那儿用setTimeout就对了,也许这就是代码感!





5.平台bug

chrome top 跳动,firefox没有这个情况。作为平台的使用方,可以从自身的代码规避使用平台的某些特性。此处我没有修复,因为不想改代码了,呵呵






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值