On Tuesday, 31 December 2013 at 12:55:59 UTC, Jacob Carlborg wrote:
On 2013-12-31 13:42, Supernova wrote:
Why do associative arrays throw an Error (RangeError) on value not found?

This seems like it would be inefficient to check for, so a recoverable Exception (ItemNotFoundException?) would seem to be more appropriate.

How would ItemNotFoundException be any more efficient? The idea is that the error should not be recoverable. If you get an RangeError in your code you have made a logical error.

You need to explicitly check if a key is available in the associative array before accessing it, something like this:

if (auto value = key in aa)
    writefln("key %s was found with the value %s", key, value);

else
    writefln("key %s was not found", key);

Doesn't that duplicate the work of discovering whether the key is there or not? I guess it would depend on the implementation.

Reply via email to