>The reason is that using the standard constructor will throw an exception when the second >parameter is a full URI (it requires a relative URI)

Sorry, but it is not.

[Remarks
This constructor creates a Uri instance by combining the baseUri and the relativeUri. If relativeUri is an absolute URI (containing a scheme, host name, and optionally a port number), the Uri instance is created using only relativeUri.](http://msdn.microsoft.com/en-us/library/9hst1w91%28v=vs.80%29.aspx)

This small piece of code to demonstrate no difference at all between reconcileURI function and standard Uri constructor:
```
using System;

public class Test {
        private static Uri reconcileURI(Uri baseUri, string newUri)
        {
            // If there is nothing new, then return the original Uri
            if (String.IsNullOrEmpty(newUri))
            {
                return baseUri;
            }

            // If the newURI is a full URI, then return that, otherwise we'll get a UriFormatException
            try
            {
                return new Uri(newUri);
            }
            catch (Exception) { }

            return new Uri(baseUri, newUri);
        }

	public static void Main(string[] args){
	    Uri uri1 = new Uri("http://google.com");

	    Uri uri2 = new Uri(uri1,"http://dropbox.com"); // Second full uri
	    Uri uri3 = new Uri(uri1,""); // Empty
	    Uri uri4 = new Uri(uri1,"favicon.ico"); // Relative uri

	    Uri rec2 = reconcileURI(uri1,"http://dropbox.com"); // Second full uri
	    Uri rec3 = reconcileURI(uri1,""); // Empty
	    Uri rec4 = reconcileURI(uri1,"favicon.ico"); // Relative uri

	    Console.WriteLine("\t\tconstrustor\t\t\treconcileURI\n");
	    Console.WriteLine("Base URI:\t{0}\t\t{0}\n",uri1.AbsoluteUri);
	    Console.WriteLine("2nd full:\t{0}\t\t\t{1}",uri2.AbsoluteUri,rec2.AbsoluteUri);
	    Console.WriteLine("2nd empty:\t{0}\t\t{1}",uri3.AbsoluteUri,rec3.AbsoluteUri);
	    Console.WriteLine("2nd relative:\t{0}\t{1}",uri4.AbsoluteUri,rec4.AbsoluteUri);
	}
}
```