
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
在互联网的快速发展的今天,衍生出了很多与互联网有关的职业,其中程序员是很大的一部分,程序员是网络架构的主要工作人员,在社会的需求与高工资的刺激之下,很多人改行做程序员,而程序员主要做什么工作呢?当然是敲代码啦,而代码也就是不同的程序语言,利用这些语言来实现线上或线下的需求,例如java、C、python、php、web、ajax...等等,其中java在语言排行榜位于首列,是现如今应用范围最广泛的语言,而且也有很多语言也是通过java所衍生出来的,今天烟台电脑培训小编为大家带来,java程序员失误点!希望大家喜欢!
日志规范性
解读
日志是定位问题时最重要的依据,业务流程中缺少必要的日志会给定位问题带来很多麻烦,甚至可能造成问题完全无法定位。
异常产生后,必须在日志中以ERROR或以上级别记录异常栈,否则会导致异常栈丢失,无法确认异常产生的位置。并不需要在每次捕获异常时都记录异常日志,这样可能导致异常被多次重复记录,影响问题的定位。但异常发生后其异常栈必须至少被记录一次。
和注释一样,日志也不是越多越好。无用的冗余日志不但不能帮助定位问题,还会干扰问题的定位。而错误的日志更是会误导问题,必须杜绝。
示例
下面的例子虽然打印了很多日志,但基本上都是无用的日志,难以帮助定位问题。甚至还有错误的日志会干扰问题的定位:
public voidsaveProduct1(ProductServiceStruct product){ log.debug("enter method: addProduct()"); log.debug("check product status"); if(product.getProduct().getProductStatus() != ProductFieldEnum.ProductStatus.RELEASE) { thrownew PMSException(PMSErrorCode.Product.ADD_ERROR); } log.debug("check tariff"); BooleanResult result =checkTariff(product.getTariffs()); if(!result.getResult()) { thrownewPMSException(PMSErrorCode.Product.ADD_ERROR); } log.debug("before add product"); ProductService prodSrv = (ProductService)ServiceLocator.findService(ProductService.class); try { prodSrv.addProduct(product); } catch(BMEException e) { // 未记录异常栈,无法定位问题根源 } log.debug("after add product"); log.debug("exit method: updateProduct()"); // 错误的日志}
而下面的例子日志打印的不多,但都是关键信息,可以很好的帮助定位问题:
public voidsaveProduct2(ProductServiceStruct product){ if(product.getProduct().getProductStatus() != ProductFieldEnum.ProductStatus.RELEASE) { log.error( "productstatus " +product.getProduct().getProductStatus() + "error, expect " + ProductFieldEnum.ProductStatus.RELEASE); thrownewPMSException(PMSErrorCode.Product.ADD_ERROR); } BooleanResult result =checkTariff(product.getTariffs()); if(!result.getResult()) { log.error( "checkproduct tariff error " + result.getResultCode() + ":" + result.getResultDesc()); thrownewPMSException(PMSErrorCode.Product.ADD_ERROR); } ProductService prodSrv = (ProductService)ServiceLocator.findService(ProductService.class); try { prodSrv.addProduct(product); } catch(BMEException e) { log.error("add product error", e); thrownewPMSException(PMSErrorCode.Product.ADD_ERROR,e); }}