I think a KeyNotFoundException should be thrown.
This is just another case where Smalltalk's collection class protocols are vastly superior to J-crap.
i := dict at: 'not_there' ifAbsent: [ 0 ].
For java I would propose something similar on Map.
map.getValueIfAbsent('key_not_found',5);
failure to use this should throw a KeyNotFoundException.