Clearly there is no universal convention, and for historical reasons database interfaces are more like to return a null-type value in this case.  But here I think of this being more like accessing a key in a dict because in most use cases you *should* have a valid `id` that is in the AGASC.  The other advantage about using an exception instead of a sentinel return value is that it lets the called routine give back some useful diagnostic information.  As a user if I call this routine with a bad value, I'm happier getting an explicit message that says what went wrong instead of just `None` which leaves me scratching my head.