throw an exception with a meaningful error message