Gestione degli errori in ASP.NET MVC

Come posso gestire correttamente le eccezioni generate dai controller in ASP.NET MVC? L’attributo HandleError sembra elaborare solo le eccezioni generate dall’infrastruttura MVC e non le eccezioni generate dal mio codice.

Usando questo web.config

    

con il seguente codice

 namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { // Force a 401 exception for testing throw new HttpException(401, "Unauthorized"); } } } 

non risulta in quello che speravo. Invece ottengo la pagina di errore ASP.NET generica che mi dice di modificare il mio web.config per vedere le informazioni di errore reali. Tuttavia, se invece di generare un’eccezione, restituisco una vista non valida, visualizzo la pagina /Shared/Views/Error.aspx:

 return View("DoesNotExist"); 

Lanciare eccezioni all’interno di un controller come ho fatto sopra sembra ignorare tutte le funzionalità di HandleError , quindi qual è il modo giusto per creare pagine di errore e come posso giocare con l’infrastruttura MVC?