Re: Cache class: Should Miss be an exception?
On 2008-03-11 00:09, Kenneth Porter wrote:
I've got a system that needs to fetch settings from a remote device over
a communications link. I cache these in a Cache class. When reading a
setting, I first see if it's in the cache. If not, I fetch it from the
external device and then cache the result.
Should a cache miss be implemented as an exception or an extra return
value? What are the relative merits of the two implementions?
I would not use exceptions since 1) a value not being in the cache is
not an exceptional event, and 2) it can easily be handled by the caller.
An alternative is to use a function that checks if a value is in the
cache and if it is you retrieve it, if it is not you get it from the
remote device and add it to the cache:
if (inCache(key) == true) {
return getFromCache(key);
} else {
double val = getFromRemote(key);
addToCache(key, val);
return val;
}
My current implementation uses an exception, and so far the only drawback
is that it generates a bunch of debugger noise in MS Visual Studio. But I
don't think VS is being reasonable in reporting every exception without
the ability to silence it. Is gdb subject to acting like this?
In the Debug-menu select Exceptions and uncheck C++ exceptions.
--
Erik Wikstr??m