Serious reworking of error reporting

Enables exceptions, uses them more.

Also, further adj to an earlier commit for field_names().