Lets say I have a web app, and despite my best testing efforts, several of the many thousands of people who uses it will find some way to generate an exception. Sure, I have error handling code for my classes and methods.
But, being unable to anticipate the context and effects of a creatively-caused exception, should I wrap the entire "main controller" in a try-catch block and just do something like echo an apologetic error page, rather than silently dying (or worse still, echoing the error string to the user)? What is correct programming practice regarding unexpected error-handling like this?