NSErrorRecoveryAttempting informal protocol provides methods that allow your application to attempt to recover from an error. These methods are invoked when an
NSError object is returned that specifies the implementing object as the error
recoveryAttempter and the user has selected one of the error’s localized recovery options.
Which method is invoked is dependent on how the error is presented to the user. If the error is presented in a document-modal sheet,
attemptRecovery(fromError:optionIndex:delegate:didRecoverSelector:contextInfo:) is invoked. If the error is presented in an application-modal dialog,
attemptRecovery(fromError:optionIndex:) is invoked.