There are a few issues here:

1. Can we change this API? Yes, we can change it - the whole deploy package is hidden from our docs and not supposed to be used by users. In a separate PR we should make this private.

2. Should we swallow all exceptions here? No, we should swallow only the ones we expect which is the missing field. Otherwise we should just throw it up the chain.

3. Should we use scala.util.Try instead of a try catch block? In the Spark code we use try {} catch {} blocks typically unless it is a very simple case where we want to swallow every possible exception.