Il discorso si fa abbastanza complesso, comunque credo di riuscire a darti qualche linea guida.
Innanzitutto, lavorando su web e non su un'applicazione windows form, non avrai mai un "corpo principale" del programma, ma diverse pagine separate. Di conseguenza, dovrai gestire gli errori, e il logging degli stessi, metodo per metodo.
Per semplificarti un po' la vita, puoi ricorrere ad un paio di espedienti. Innanzitutto dichiarare una classe sotto App_Code dove istanziare in maniera statica un logger di log4net, e richiamarlo così da tutte le pagine che utilizzerai, in modo da non doverne fare un'istanza per pagina.
codice:
public static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Se la tua classe si chiamerà ad es. Common, ti basterà fare da ogni pagina:
codice:
Common.log.Error("loggo il mio errore");
Per quanto riguarda i blocchi try/catch/finally, dovrai ovviamente utilizzarli laddove il codice può generare un eccezione. Se hai bisogno di gestire ogni tipo di errore in maniera specifica, basta che consulti la reference dei metodi che chiami, e guardare quali eccezioni possono generare, e di conseguenza gestirle con una serie di catch consecutive:
codice:
try
{
.....
}
catch (IOException ex)
{
}
catch (ArgumentNullException ex2)
{
}
catch (Exception ex3)
{
}
L'eccezione generica Exception va sempre gestita per ultima, perchè è l'ultima risorsa nel caso l'errore generato non rientri in nessuna delle casistiche specificate sopra.
Per quanto riguarda il cosa mettere nel catch, è una tua scelta. Sicuramente puoi loggare l'eccezione, poi vedere cosa vuoi che veda l'utente: se hai previsto una label che visualizzi un messaggio di errore, è sufficiente valorizzarne il testo e renderla visibile; nel caso invece che tu voglia che l'utente venga reindirizzato alla pagina di errore generico specificata nel web.config:
codice:
<customErrors mode="On" defaultRedirect="~/Errori/ErroreGenerico.aspx">
<error statusCode="403" redirect="~/Errori/403.aspx"/>
<error statusCode="404" redirect="~/Errori/404.aspx"/>
</customErrors>
sarà sufficiente che, dopo il logging, esegui un throw, in modo da rimandare l'applicazione in errore, e venire così gestita dalla sezione customerrors.
Se mi viene in mente altro poi lo aggiungo.
Ciao