今天廷鹏师弟来的java建议
如下一段获取数据代码的问题:
public Serializable getById(Serializable id) throws BaseBusinessException {
if (id == null)
throw new BaseBusinessException("根据给出的Id获得对象时,ID不得为空!");
try {
return basicDAO.findById(id);
} catch (BaseDBException e) {
log.error("根据给出的Id获得对象:" + getObjectName() + "失败");
e.printStackTrace();
throw new BaseBusinessException(e.getMessage());
// }
}
}
问题:
问题1: e.printStackTrace(); 会造成有一部分日志不在控制范围内,
应该这样写
log.error("根据给出的Id获得对象:" + getObjectName() + "失败",e);
问题2: throw new BaseBusinessException(e.getMessage());
这种方法直接抛出异常到界面,会非常不友好
对于一种get数据的方法,应该将这些异常捕获,用log.erro打印到后台,前端返回null即可
改良1 : 可采用标注型事务
原来我们都是采用 前缀控制的 声明式事务,这种方法对方法名有所限制,而且不太灵活
可以采用标注型控制,在方法上加上 @Transactional 即可
@Transactional
public Serializable getById(Serializable id) throws BaseBusinessException
改善后的代码
@Transactional
public Serializable getById(Serializable id) throws BaseBusinessException {
if (id == null)
throw new BaseBusinessException("根据给出的Id获得对象时,ID不得为空!");
try {
return basicDAO.findById(id);
} catch (BaseDBException e) {
log.error("根据给出的Id获得对象:" + getObjectName() + "失败", e);
//e.printStackTrace();
//throw new BaseBusinessException(e.getMessage());
// }
}
return null;
}
今天廷鹏师弟来的java建议的更多相关文章
- 2015第16周六学习java建议
学习Java 建议: 尽量用 google 查找技术资料. 有问题在 stackoverflow 找找,大部分都已经有人回答. 多看官方的技术文档. ibm developerworkers 的文章质 ...
- 振鹏同学正式学习java的第一天!
一.今日收获 1.最棒的莫过于运行Java的HelloWorld! 2.在同学的帮助下历经坎坷困苦安装完成了Eclipse软件并设置好环境变量. 3.最最最开始了解了Java的前世今生,编程语言发展的 ...
- java超市购物管理系统
一.概述 1.鹏哥前面有写过java项目超市管理系统项目,传送门 2.收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思想练习,但是没有涉及到java如 ...
- Java的常用对象①②
Java的常用对象① Java的常用对象有很多,这里只对lang包中常用的Object,Date(Calendar,DateFormat,Math),System,Runtime进行介绍.㈠Objec ...
- Java Annotation认知(包括框架图、详细介绍、示例说明)
摘要 Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚 ...
- 20145317彭垚 《Java程序设计》第一次实验实验报告
20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...
- 20145218 《Java程序设计》第05次实验报告
北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验名称:Java网络编程及安全 一.实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使 ...
- PHP开发人员对JAVA的WEB开发入门(初版-已废弃)
最近准备对其他部门PHP开发的童鞋做一个对JAVA的培训.知己知彼,百战不殆,我要先了解点PHP,才能确认他们的基础,达到好的授课效果. PHP(原始为Personal Home Page的缩写,后正 ...
- Java 多态、内部类、异常、包
一.多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态. 例如: 动物中的猫和狗. 猫这个对象对应的是猫类型,例如:猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为 ...
随机推荐
- Myeclipse 2013 professional 破解
破解前要先关闭Myeclipse2013 1.(1)输入usercode可以随便输入,(2)然后选择Myeclipse的版本,(3)点击systemid按钮 2.然后点击Tools菜单栏下的Rebui ...
- Mysql中的auto_increment
Mysql中的auto_increment 1.创建 2.使用 [1]如果不写固定列,则必须要插入该列,可以直接写Null,否则会报错 [2]可以直接在auto_increment 列上直接插入显式值 ...
- python基础(基础数据类型)
一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...
- [py]django的manytomany字段和后台搜索过滤功能
我本来想搞下Django之select_related和prefetch_related的区别,看到这里有djangoapi的知识, 之前搞过django restfulapi,http://blog ...
- Java转Exe
1.Jsmooth Java文件打包成exe文件(可以在没安装JDK的环境下运行):http://www.tuicool.com/articles/byIFJn 2.用JSmooth制作java ja ...
- Eclipse中没有javax.servlet和javax.servlet.http包的处理办法
使用Eclips开发JSP也需要这两个包:javax.servlet和javax.servlet.http:若提示没有javax.servlet包则安装如下处理办法解决: 如果你装了Tomacat,那 ...
- 关于ML的思考讲座-周zh-11.30日
1.深度神经网络 1.以往神经网络采用单或双隐层结构,虽然参照了生物上的神经元,但是从本质上来说还是数学,以函数嵌套形成. 2.通常使用的激活函数是连续可微(differentiable)的,sigm ...
- [华为]查找两个字符串a,b中的最长公共子
链接:https://www.nowcoder.com/questionTerminal/181a1a71c7574266ad07f9739f791506来源:牛客网 查找两个字符串a,b中的最长公共 ...
- docker——网络配置
一.网络启动与配置参数 Docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机,它会在挂载其上的接口之间进行数据转发.同时,Docker随 ...
- ES6基本语法和一些面向对象的知识
声明变量 var 使用var声明变量会将变量的声明提到全局,在局部作用域声明的在全局也能打印 { var a = 12; } // 变量提升 var会将变量的声明提到全局 console.log(a) ...