Qual è il modo suggerito per mostrare messaggi di eccezione su UI che sono state prodotte in Business layer?

StackOverflow https://stackoverflow.com/questions/2766309

Domanda

C'è un motivo o 'best practice' sulla creazione di messaggi amichevoli di utente nel livello di presentazione utilizzando eccezioni che sono stati gettati dal Business Layer?

In realtà, in molti casi io preferisco buttare eccezioni di applicazione e questo mi sta costringendo a catturarli su UI (aspx.cs pagine). E se il processo è complesso che può produrre diversi tipi di eccezioni devo avere molti blocchi di cattura per produrre messaggi di errore specifici.

C'è un modo migliore venire in mente? Un modello forse per casi analoghi?

grazie

È stato utile?

Soluzione

Si potrebbe utilizzare una classe di eccezione personalizzata per restituire errori tramite eccezioni al livello di interfaccia utente. Queste eccezioni personalizzate potrebbe quindi contenere un messaggio di errore che sarà significativo per l'utente, in modo da poter visualizzare che, proprio come si farebbe con qualsiasi altro messaggio di errore.

In questo modo si avrà solo bisogno di un unico gestore di eccezioni nell'interfaccia utente, invece di molti per ogni tipo di errore ...

Altri suggerimenti

Per prima cosa: penso che sia migliore pratica solo per le eccezioni di cattura in codice che può gestire in questo momento. Se non riesco a gestire solo lasciarlo promuovere al più alto livello.

Secondo: C'è la possibilità di eccezioni di cattura a livello globale:

public static void RegisterExceptionHandler()
{
    Application.ThreadException += new System.Threading.ThreadExceptionEventHandler    (Application_UIThreadException);
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

In questo metodi di gestione tutte le eccezioni che non sono stati trattati sono catched eccezione. Qui si può informare l'utente che qualcosa di "inattesa" ha happend.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top