FormatSafe

using System;

public static class StringExtensions
{
	/// <summary>
	/// Formats the string safely, without throwing any exceptions.
	/// </summary>
	/// <param name="format">The format source string to apply the given arguments to.</param>
	/// <param name="args">Arguments to apply to the format source string.</param>
	/// <returns>The formatted string. Null if the format source string was null.</returns>
	/// <remarks>
	/// Basic Example:
	/// <example><![CDATA[
	/// var message = "Hello, {0}!";
	/// var formattedMessage = message.FormatSafe("World");
	/// // formattedMessage now contains the string "Hello, World!".
	/// ]]></example>
	/// Error Example:
	/// <example><![CDATA[
	/// var message = "Hello, {1}!";
	/// var formattedMessage = message.FormatSafe("World");
	/// // formattedMessage now contains the string "Hello, {0}! (Invalid format or args!)".
	/// ]]></example>
	/// </remarks>
	public static string FormatSafe(this string format, params object[] args)
	{
		const string badFormat = " (Invalid format or args!)";

		if (format != null)
		{
			try { return String.Format(format, args); }
			catch { return format + badFormat; }
		}
		return null;
	}
}
Example:
var message = "Hello, {0}!";
var formattedMessage = message.FormatSafe("World");
// formattedMessage now "Hello, World!".

// Error Example:
var message = "Hello, {1}!";
var formattedMessage = message.FormatSafe("World");
// formattedMessage now contains "Hello, {1}! (Invalid format or args!)".

Description

Formats a string safely, without throwing any exceptions. Adds an exception message to the resulting string instead.

Details

Double click on the code to select all.

 

;