11
2019
06

触发异常处理及用户自定义异常处理

触发异常我们可以使用raise语句自己触发异常raise语法格式如下:语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。实例一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。定义一个异常非常简单,如下所示:注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类
11
2019
06

使用except

使用except而不带任何异常类型你可以不带任何异常类型使用except,如下实例:以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。使用except而带多种异常类型你也可以使用相同的except语句来处理多个异常信息,如下所示:try-finally 语句try-finally 语句无论是否发生异常都将执行最后的代码。实例如果打开的文件没有可写权限,输出如下所示:同样的例子也可以写成如下方式:当在try块中
06
2019
06

参数校验和国际化

# 参数校验和国际化修改前代码controller代码:根据id删除对象。错误范例:其中的lang参数我们需要去掉service代码:出现和业务无关的参数local。错误范例:修改后代码controller代码service代码Controll的非业务代码如何去掉参考 Controller规范,下面说说去掉Local参数。TIP业务代码里面不要出现和业务无关的东西,如local,MessageSource 。去掉国际化参数还是使用的技术还是ThreadLocal。国际化信息可以放好几个
05
2019
06

使用重载编写衍生函数组

使用重载编写衍生函数组开发过的兄弟都知道,有一些工具库,有一堆的重载函数,调用起来非常方便,经常能直接调用,不需要做参数转换。这些是怎么样编写出来的呢?我们举例说明。现在需要编写一个方法,输入是一个utf-8格式的文件的文件名,把里面内容输出到一个list< String>。我们刚刚开始编写的时候,是这个样子的我们先实现,实现完之后我们做第一个修改,很明显,utf-8格式是很可能要改的,所以我们先把它做为参数提取出去,方法一拆为二,就变成这样。多了一个方法,直接调用之前的方法主体,主
05
2019
06

使用父类/接口

使用父类/接口举例,假设我们写了一个判断arraylist是否为空的函数,一开始是这样的。这个时候,我们需要思考一下参数的类型能不能使用父类。我们看到我们只用了size方法,我们可以知道size方法再list接口上有,于是我们修改成这样。后面发现,size方法再list的父类/接口Collection上也有,那么我们可以修改为最终这样。到了这部,Collection没有父类/接口有size方法了,修改就结束了。最后我们需要把参数名字改一下,不要再使用list。改完后,所有实现了Collectio
05
2019
06

代码编写中经常会涉及的工具类

如何编写出好的工具类,代码编写中经常会涉及的工具类隐藏实现:就是要定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。这也是解耦的一种体现。如果我们不定义自己的工具类而是直接使用第三方的工具类有2个不好的地方:1.不同的人会使用不同的第三方工具库,会比较乱。2.将来万一要修改工具类的实现逻辑会很痛苦。以最简单的字符串判空为例,很多工具库都有 StringUtils工具类,如果我们使用 commons 的工具类,一开始我们直接使用 StringUtils.isEmpty ,字符串为空或
03
2019
06

解耦是编程里面重要的思想

解耦是编程里面重要的思想个人认为,解耦是编程里面重要的思想,解耦的关键在于:多引入“第三者”,不要直接发生关系。spring的IoC最重要的价值不就是解耦吗?spring的容器不就是“第三者”吗?就像mvc一样,数据和视图要彻底的分离,否则业务代码里面有视图代码改起来是很痛苦的。数据结构上要考虑扩展由于是牵涉到表设计的时候,大家都知道改表结构很痛苦。很多时候,由于时间关系,一开始只做简单的功能,后面会慢慢丰富功能。这虽然不是变更,但是如果你一开始的时候不设计好,很可能后面版本需要大改动,数据库表
03
2019
06

如何应对需求变更

如何应对需求变更?有没有可能存在明确的、不再改动的需求呢?其实很难的。关于需求变动,不同的角色定义很不一样。BA觉得这个改动很正常,开发人员觉得就是个需求变更,两边各执一词,这种矛盾长期存在。我列举几种场景,大家觉得算不算需求变更?删除对象功能一开始只能创建者删除,后面变更为管理员也可以删除,再后面变更了某个角色也可以删除。配置功能一开始使用xml配置,后面修改为json格式,又或者修改为使用数据库配置。导出功能一开始导出为excel格式,后面变更为导出json格式或者pdf格式。或者一开始导出
03
2019
06

让你快速提高效率的日志小要求

让你快速提高效率的日志小要求#用户工具类用户信息放入MDC:#log4j配置增加用户信息变量,%X{user}#日志要求做好上面2步后,对开发人员的日志只有3点要求:1.修改(包括新增)操作必须打印日志大部分问题都是修改导致的。数据修改必须有据可查。2.条件分支必须打印条件值,重要参数必须打印尤其是分支条件的参数,打印后就不用分析和猜测走那个分支了,很重要!如下面代码里面的userType,一定要打印值,因为他决定了代码走那个分支。数据量大的时候需要打印数据量前后打印日志和最后的数据量,主要用于
31
2019
05

开发程序员如何写日志才能提高效率

开发程序员如何写日志才能提高效率开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和考核,没有日志功能一样跑啊。开发久了,总会遇到“这个问题生产环境上能重现,但是没有日志,业务很复杂,不知道哪一步出错了?” 这个时候,怎么办? 还能怎么办,发个版本,就是把所有地方加上日志,没有任何新功能,然后在让用户重现一遍,拿下日志来看,哦,原来是这个问题。有没有很熟悉的感觉?还有一种情况,我们系统有3*5=15个节点,出了问题找日志真是痛苦,一个