2

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

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;
}

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

4

3 回答 3

1

不要在每个级别记录异常。仅在“顶级”级别记录它。在不记录它会导致错过异常的地方记录它。

于 2012-12-17T23:58:35.923 回答
0

这取决于你。我的建议是在它们表明确实出乎意料的情况下记录异常。当然,“例外”这个名称似乎表明情况总是如此,但不一定。

有时,代码会针对非异常情况返回异常。

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

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

于 2012-12-17T23:57:32.423 回答
0

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

tl; dr:例外情况(希望)很少见,因此请记录它们。

于 2012-12-17T23:59:50.340 回答