Your final step for handling bad controller names is to tell ASP.NET MVC to use your custom controller factory. To make that happen, you just need to insert a line into the Application_Start method of ...
There really isn't such a thing as an "unhandled error" -- if your code throws an error outside of a Try...Catch block, then your error bubbles up through various ASP ...