another update on exception handling. I added two more exceptions to
represent different scenarios that have not been handled correctly from
the callee. This is a practice to avoid null values return to the
querier, because the querier would have no idea what have happened if
every error signifies a null return.