private Schema determineSchemaOrReturnErrorSchema(Configuration conf, Properties props) {
    try {
      return AvroSerdeUtils.determineSchemaOrThrowException(conf, props);
    } catch (AvroSerdeException he) {
      LOG.warn("Encountered AvroSerdeException determining schema. Returning signal schema to indicate problem",
          he);

      return SchemaResolutionProblem.SIGNAL_BAD_SCHEMA;
    } catch (Exception e) {
      LOG.warn("Encountered exception determining schema. Returning signal schema to indicate problem", e);
      return SchemaResolutionProblem.SIGNAL_BAD_SCHEMA;
    }
  }
Attempt to determine the schema via the usual means, but do not throw
an exception if we fail.  Instead, signal failure via a special
schema.  This is used because Hive calls init on the serde during
any call, including calls to update the serde properties, meaning
if the serde is in a bad state, there is no way to update that state.
serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerDe.java