It is hard to predict what exception may be thrown.  Most probably would extend Puppet::Error, but not all.  Puppet::Import error is an example of this.  It is extended by Racc::ParseError rather than Puppet::Error.  There could be others out there today, and hard to predict in the future.

When we catch this error, we are logging the exception and exiting immediately after.  What would be the harm in catching Errno:ENOMEM?