static void processError( IProcessingError error, IFlexiCaptureProcessor processor, ErrorHandlingStrategy strategy )
        {
            assert( error != null );

            // You can store the problematic image for later analysis
            if( error.ImageFile() != null ) {
                string imageReference = error.ImageFile().GetFileReference();
            }

            // And use different strategies to handle the error
            switch( strategy ) {
                // 1) Log the error and continue
                case ErrorHandlingStrategy.LogAndContinue:
                    trace( "Processing error: " + error.MessageText() );
                    return;
                // 2) Retry
                case ErrorHandlingStrategy.LogAndRetry:
                    trace( "Processing error: " + error.MessageText() );
                    // Resume processing from the position where error occurred
                    processor.ResumeProcessing( true );
                    return;
                // 3) Break processing
                case ErrorHandlingStrategy.ThrowException:
                    // This will reset the processing state (image queue, error condition, etc.) but keep
                    // the processing configuration (loaded templates and processing params). You can omit this
                    // call if you do not plan to reuse the processor instance or reset the processor elsewhere
                    processor.ResetProcessing();
                    throw new Exception( error.MessageText() );
            }
        }