You should just return this as a generator instead of doing this crazy exception checking during a data conversion. If you return it as a generator, not only will it be much faster and cleaner, but it means you can throw your exceptions when you're actually checking the answers, which makes more sense semantically.

Personally I'd make a lambda function for making the evaluator since you're not using most of the variables anyway, then you could just return the generator and when you actually use it during check answers you could catch the errors as they arise.