I see.  This is indeed unfortunate and understandable.  I'm sorry for harping 
on this, I know that the project is young, and I thought it would be important 
to opine early on.

I've found in API design, that if you don't make it idiot-proof and airtight, 
you will feel worlds of pain literally, forever.  For a web 2.0 example of 
this, look up resig's jquery lectures although there are many other examples of 
people getting themselves in trouble for not treating their API as if it was a 
truckload of diamonds.

I still think that the exception handler invoking in this case may lead to 
large-scale improper use especially when less skilled people start using the 
technology --- which will be inevitable (and why I gave the PHP number).

I wish there was a different way of dealing with this problem that wouldn't be 
susceptible to so much theoretical misuse but given what you said, I have no 
solution other then to invent some reserved value that is *special for 
cassandra* - but this also sounds like it will lend to a potential travesty of 
poor design.

Any ideas?  Thanks.


-----Original Message-----
From: Jonathan Ellis [mailto:[email protected]]
Sent: Tue 10/27/2009 1:14 PM
To: [email protected]
Subject: Re: Performance of get
 
On Tue, Oct 27, 2009 at 2:00 PM, Christopher McKenzie
<[email protected]> wrote:
> Exceptions are a special feature of languages often with their own keywords, 
> primitives, and usually chapters in books.  I don't profess to be an expert 
> in the various exception models for all the versions of various 
> implementations of C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, 
> Cocoa, Smalltalk, and OCaml that thrift supports.  But I would claim that, 
> with such a large heterogeneous and dynamic support base, one should use 
> something as varied and unpredictable as the exception handling models with 
> great care and I don't "personally feel" that the understandably expected 
> error case of Get should be escalated to be handled by this mechanism.

There are basically two sane options for looking up a key that doesn't
exist.  One is to return null or the equivalent; the other is to raise
an exception.  There are pros and cons for each, and examples of
languages whose stdlib behaves either way.  So a blanket Exceptions
Are Not Idiomatic For Key Lookup statement is misguided.

And as it happens, Thrift does not support returning null values at
all, so from there the natural choice was obvious.

-Jonathan

<<winmail.dat>>

Reply via email to