Suppongo che si stia utilizzando WCF, poiché la domanda è contrassegnata con esso. Una buona pratica nella gestione delle eccezioni con WFC non consente alle eccezioni di diffondersi in tutto il cavo verso il consumatore, ma lancia invece FaultException significative.
Si dovrebbe sempre provare ... catturare il blocco nelle operazioni se esiste la possibilità che venga generata un'eccezione. Se si consente la bolla di approvazione, possono verificarsi solo due scenari: Se il servizio è stato configurato per consentire dettagli delle eccezioni negli errori, si espongono i componenti interni del servizio che si aprono per violazioni della sicurezza. Oppure non hai configurato questo nel tuo servizio e il consumatore riceve un messaggio molto generico che indica che qualcosa è andato storto, il che non è molto utile per loro o per il team di supporto.
Quello che dovresti fare è dichiarare una o più FaultException, a seconda di quali messaggi vuoi che l'utente riceva dall'operazione, decorandoli come FaultContracts sulla dichiarazione di operazione. Quindi puoi provare ... catturare eccezioni specifiche e generare errori specifici. Puoi anche provare ... cattura che cattura un'eccezione e genera un errore molto generale.
La chiave qui, non sta rivelando troppe informazioni di ciò che sta accadendo con l'operazione internamente - specialmente tracce dello stack!
L'errore è solo un altro contratto di dati, quindi è dichiarato nel WSDL. Ciò significa che il consumatore può individuare l'errore in modo specifico e può reagire ai guasti generati dall'operazione come se si trattasse di un'eccezione generata dal codice.
Spero che questo aiuti.
Joe.
fonte
2008-12-15 13:36:46