Not sure about performance, but we definitely don't use exceptions like that. Loosely following what `deserialize_attribute` does would be great :)