Какое исключение .net должно выбрасывать клиент (или, лучше, повторно выбрасывать), если оно ловит какое-либо непредвиденное исключение с сервера (например, обернутое как FaultException через WCF, сервер может быть записан на Java) для дальнейшей его обработки клиент следующим образом:
- Клиент показывает пользователю сообщение о возможной ошибке в клиенте / сервере
- Клиент предоставляет разработчикам подробности этого исключения (например, по электронной почте)
Пример на бизнес-уровне:
var client = new MyWcfClient());
try {
// Try get data.
var data = client.getSomeData(id);
if(data == null) {
// Unexpected exceptions from the server.
// throw new Exception???
}
} catch(FaultException<Specified1Exception> exception) {
// Handle e.g. re-throw.
// Shows the user the myErrorText.
throw new InvalidOperationException(myErrorText)
} catch(FaultException<Specified2Exception> exception) {
// Handle e.g. re-throw.
// Enforce to show the user some dialog.
throw new ArgumentException(param, myText);
} catch(FaultException exception) {
// Unexpected exceptions from the server.
// throw new UnexpectedServerException???
} catch(Exception exception) {
// WCF error, like communication timeout, soap etc.
throw new InvalidOperationException(myOtherErrorText);
}
Предоставляет .net framework любые исключения для (в этом примере UnexpectedServerException), если нет, какое исключение вы бы создали?