why it returns after throw? IMO it is unreachable.