开发中的一些坑(持续更新.......)
来源:互联网 发布:pic16f877a单片机 编辑:程序博客网 时间:2024/06/08 11:37
1.Log4j不打印异常栈的问题
情景是这样,线上发现空指针异常,但是没有打印异常栈,同事查看代码,发现打印日志的用的组件是Log4j,api是log4j中的error(Object message)方法,这个方法是不打印异常栈的,同时log4j还提供了个重载方法error(String msg,Throwe e),这个方法是可以打印异常栈的。开发代码的时候不小心用错了方法。其实出现问题的这个项目里面用到的是logback,只是log4j的jar包也在,不小心引用错了。
总结:建议使用logback,因为logback的error方法error(String msg, Throwable t)。同时一个项目里面不要引入不同的日志组件,打印日志特别是错误日志注意打印"案发现场"
2.上线打包代码不全
同事A要上线,直接打了个本地war包,放到了线上,他忘记了同事B又修改了bug,然后也将代码提交了,导致这一部分代码没有部署到线上环境,结果可想而知,qa的回归的时候又发现了测试中的bug。
总结:线上发布版本,要直接从git上拉取,不能本地打包。或者干脆提测的版本1个tag号打出2个包,这2个包只是配置不一样.测试通过直接将这个tag的正式包放到线上!
3 包含远程服务的事务
一个事务内部包含了几个db操作,还有1个发放代金券的接口,最后一个记录日志到db里面的操作。由于某种原因,最后一个记录db操作的方法执行错误,导致整个事务回滚,但是发放代金券的接口却没有回滚,导致了非常严重的问题,发放了代金券却没执行扣款操作。
总结:包含远程服务的事务,要格外小心整个数据的一致性,一般的做法是将远程服务放到方法最后,上面的例子显然也做到了这一点,只是没有对最后一个记录日志的操作异常捕获!也可以对整个业务块加个try-catch,发生了错误先回滚发放代金券的接口,如回滚成功,抛异常,回滚db操作!
- 开发中的一些坑(持续更新.......)
- ios7开发中的一些汇总(持续更新中。。。)
- VR项目开发中的一些心得,持续更新
- Cocos2d-JS开发中的一些小技巧(持续更新)
- Struts2在开发中的一些异常总结(持续更新)
- lua开发中的一些小笔记(持续更新)
- Android开发过程中的一些常识(持续更新)
- Lua开发中的坑(持续更新ing。。。)
- 一些VC编程中的技巧[持续更新]
- 调试中的一些错误---持续更新
- 流媒体开发的一些参考资料--持续更新
- iOS 持续更新 开发中的一些小问题和技巧1
- Hibernate4.3在开发中的一些异常总结(持续更新)
- 开发过程中的疑惑整理(持续更新)
- IDEA的一些坑(持续更新)
- javascript使用中的一些小功能总结(持续更新中)
- 关于网页设计中的一些有趣网站--(持续更新)
- IOS学习中的一些小知识点总结(持续更新)
- 操作系统(三)-----操作系统的特征
- 秦安工控北京科技有限公司
- python基础学习-开篇
- 分割窗口后,CView 中显示影像
- What is the TensorFlow checkpoint meta file?
- 开发中的一些坑(持续更新.......)
- jquery中常见的几个问题
- Spring AOP 实现原理
- maven部署 pom文件一直有红叉
- ios下拉图片放大
- 枚举应用(1)-熄灯问题
- Leetcode 84. Largest Rectangle in Histogram
- SpringMvc国际化i18n
- iOS10 不能跳转系统设置解决办法(2)