异常发生时记录?

时间:2012-12-17 23:55:33

标签: java design-patterns

我有一个关于如何设计错误处理的一般性问题。我想在我的代码中使用一些第三方服务。通常我将服务包装在客户端类中。然后我的其余代码只处理我的客户端类,并且对于钩子下的真实服务是盲目的。我的客户端类有一些记录错误的机制。但它不想捕获和处理服务中的任何异常。理想情况下,它应该忽略异常处理并将异常传播到外部。但是,如果我想记录异常,我必须做这样的事情:

try{
    .... // call 3rd party service;
}catch(Exception e){ // e is triggered from the service;
    Log.error("Oops, an error: " + e); // shall I log the exception??
    throw e; // don't swallow the exception;
}

一方面,我不想这样做。我可以忽略异常的处理和记录。让我的客户端类的调用者处理异常或记录错误。问题是,我何时应该记录异常,何时不应该?我想听听一些常见的做法和原则。谢谢。

3 个答案:

答案 0 :(得分:1)

不要在每个级别记录异常。仅在“顶部”级别记录它。将其记录在不记录它的位置会导致异常被遗漏。

答案 1 :(得分:0)

这取决于你。我的建议是在异常表明真正意外的情况时记录异常。当然,名称“例外”似乎表明情况总是如此,但不一定。

有时,代码会返回异常情况的异常。

有时,代码调用其他代码,知道它会在某些情况下调用异常,但异常集是“OK”。

有时,异常表示确实发生了意外事件,这通常是一件坏事。那时你应该记录它,或者更好的是,确保你的代码大声抱怨。

答案 2 :(得分:0)

如果触发异常的可能性相当低,我认为没有真正的理由来记录它。不记录异常以帮助调试的唯一原因是它是否持续触发。如果您有一个具有此特性的异常,那么我建议您编写代码,以便不会不断触发异常。

tl; dr:异常(希望)很少见,所以请记录它们。