在软件实现中,异常和日志都是重要的质量保证手段,经常,我们总是需要在系统实现上同时提供异常和日志,并且总是在“距离”很近的地方实现的,下面是一段典型的使用异常和日志的代码:
来源:http://www.matrix.org.cn/blog/X-Brave/
try{
//do something here...
}catch(Exception e){
log.error(“Your business exception message…”);
throw new BusinessException(“Your business exception message…”);
}
类似的代码我们经常碰到。虽然类似的代码都是简单的,但在现实中我们可以发现,一些时候粗心的程序员总是忽略或者忘记了两者都需要书写并且尽可能使用一致的异常消息。既然异常和日志总是同时出现的,那么我们就可以把两者集合起来。实际上在我看来,他们本来就是一家人。
为了达到异常和日志的集合,我测试过2种做法:一种选择是在自定义异常类中提供支持;一种是异常消息拼凑时提供支持。我们也可以在其中提供额外的功能来保证系统的效能,包括“适度”缓冲的异常处理。但需要非凡注重的是,这种处理所带来的“长过程”(也就是经过不止一个步骤才完成这些功能)开销,在缓冲异常信息可能带来的系统出错时异常丢失,以及在异常消息处理时可能出现错误需要提供额外的保护措施。
更进一步的,我们应该注重到如下事实:
首先,异常的层次结构是不同的。它包括了底层的LowlevelException(合称相关需要抛出异常的异常处理)和上层的异常使用者,细心的读者应该发现,上述的实例实际上属于LowlevelException。
其次,我们也应该注重到异常包括客户定制的异常如BusinessException和java自带的异常。这些异常的共存如何进行统一是我们需要面对的,但通常,我认为异常的客户定制包装是必要的,非凡是多层结构下这个客户定制化就是让异常具有轻易理解的信息。
异常和日志的集合,是一种简单、实用的创新做法,在这种实现里面,你可以提高系统异常处理的一致性程度、你可以提供经过缓冲的日志输出的一致性做法,我们也注重到她的处理的灵活性,必要时,你可以关闭她。
新闻热点
疑难解答