I'm kind of new to cassandra.  In my application, testing for existence is quite usual.  For instance, someone gives me say, a URL, and if it doesn't exist, I am ok with that.  This will be the usual case.  Existence may only happen like 20% of the time.

I was thinking this would be fine, until I saw that the thrift API *throws and exception* if a key doesn't exist.

Checking for existence, a normal control flow operation, requires using a try/catch method, which are not intended for normal control flow. Many languages discard the stack when exceptions are thrown and then do non-local jumps.  Other languages will throw the exception to the operating system (a 'first chance' exception for instance) to be caught by a debugger if attached.  Other languages actually execute an interrupt on the processor which is a horrible design principle for normal program flow: http://en.wikipedia.org/wiki/Interrupt.

My experience with PHP has shown that interrupts come at a cost of about 200 times that of a type check.  C++ if I recall, on x86/linux was at least an order of magnitude as well.  In Java, it's a bit cheaper, but there are still faster ways of doing it.

Could Get possibly return a reserved value instead?