Nello script #175 si è visto come mostrare il dettaglio degli errori a scopo diagnostico. In una situazione normale, mentre il servizio è in produzione, è sconsigliato però tenere attivo la modalità verbosa, ma piuttosto restituire degli errori più comprensibili al chiamante, laddove abbia un senso informarlo, magari a causa di un suo input.

A tal proposito sulla classe DataService<T> viene in aiuto il metodo HandleException che attraverso al suo argomento permette di gestire alcuni aspetti. Prima di tutto è possibile scegliere se attivare UseVerboseErrors in funzione dell'eccezione ottenuta tramite la proprietà Exception. Quest'ultima può facoltativamente essere sostituita con un'altra e usata come messaggio di errore.

Nel codice seguente si valuta l'eccezione e nel caso sia un errore inerente al DB si personalizza l'errore mediante un DataServiceException. Negli altri casi verrà invece restituito un generico errore.

public class ProductsService : DataService<Products>
{

  protected override void HandleException(HandleExceptionArgs args)
  {
    base.HandleException(args);

    if (args.Exception is DbException)
      args.Exception = new DataServiceException("Errore di accesso al database");
  }

}

E' possibile inoltre, con ResponseStatusCode, personalizzare lo status code da restituire all'utente. Normalmente questo valore, in caso di errore, è 500.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi