WriteError() private method

Writes a string to the output and sets the Handled flag.
private WriteError ( string message, PlaceholderInfo placeholder ) : void
message string
placeholder PlaceholderInfo
return void
        /// <summary>
        /// Determines what to do when an Invalid Selector is found.
        /// 
        /// Returns True if we should just continue; False if we should skip this item.
        /// </summary>
        private bool OnInvalidSelector(string format, CustomFormatInfo info, PlaceholderInfo placeholder)
        {
            string invalidSelector = format.Substring(placeholder.selectorStart, placeholder.selectorLength);

            string message;
            switch (InvalidSelectorAction) {
                case ErrorAction.ThrowError:
                    //  Let's give a detailed description of the error:
                    message = FormatEx(
                            ("Invalid Format String.\\n" +
                             ("Could not evaluate \"{0}\": \"{1}\" is not a member of {2}.\\n" +
                              ("The error occurs at position {3} of the following format string:\\n" + "{4}"))),
                            invalidSelector, info.Selector, info.CurrentType, placeholder.placeholderStart, format);
                    throw new ArgumentException(message, invalidSelector);
                case ErrorAction.OutputErrorInResult:
                    //  Let's put the placeholder back,
                    //  along with the error.
                    //  Example: {Person.Name.ABC}  becomes  {Person.Name.ABC:(Error: "ABC" is not a member of String)}
                    message = ("{" + (FormatEx("{0}:(Error: \"{1}\" is not a member of {2})", invalidSelector,
                                                    info.Selector, info.CurrentType) + "}"));
                    info.WriteError(message, placeholder);
                    return false;
                case ErrorAction.Ignore:
                    //  Allow formatting to continue!
                    break;
            }
            return true;
        }
        /// <summary>
        /// Determines what to do when an Invalid Selector is found.
        /// </summary>
        private void OnInvalidFormat(string format, CustomFormatInfo info, PlaceholderInfo placeholder, Exception ex)
        {
            string selector = format.Substring(placeholder.selectorStart, placeholder.selectorLength);
            string invalidFormat = format.Substring(placeholder.formatStart, placeholder.formatLength);
            string errorMessage = ex.Message;

            if (ex is FormatException) {
                errorMessage = FormatEx("\"{0}\" is not a valid format specifier for {1}", invalidFormat,
                                            info.CurrentType);
            }

            string message;
            switch (InvalidFormatAction) {
                case ErrorAction.ThrowError:
                    //  Let's give a detailed description of the error:
                    message = FormatEx(
                            ("Invalid Format String.\\n" +
                             ("Could not evaluate {{0}} because {1}.\\n" +
                              ("The error occurs at position {2} of the following format string:\\n" + "{3}"))), selector,
                            errorMessage, placeholder.placeholderStart, format);
                    throw new ArgumentException(message, invalidFormat, ex);
                case ErrorAction.OutputErrorInResult:
                    //  Let's put the placeholder back,
                    //  along with the error.
                    //  Example: {Person.Birthday:x}  becomes  {Person.Birthday:(Error: "x" is an invalid format specifier)}
                    message = ("{" + (FormatEx("{0}:(Error: {1})", selector, errorMessage) + "}"));
                    info.WriteError(message, placeholder);
                    break;
                case ErrorAction.Ignore:
                    //  Allow formatting to continue!
                    break;
            }
        }