Хорошо, я знаю, что что-то здесь упускаю.У меня есть следующий контракт операции:
public double DivideByZero(int x, int y)
{
if (y == 0)
{
throw new FaultException<ArgumentException>
(new ArgumentException("Just some dummy exception")
,new FaultReason("some very bogus reason"), new FaultCode("007"));
}
return x / y;
}
И от клиента взято следующее: -
Console.WriteLine("Enter the x value");
string x = Console.ReadLine();
Console.WriteLine("Enter the Y value");
string y = Console.ReadLine();
try
{
double val = client.DivideByZero(Convert.ToInt32(x), Convert.ToInt32(y));
Console.WriteLine("The result is " + val.ToString());
}
catch(FaultException<ArgumentException> exp)
{
Console.WriteLine("An ArgumentException was thrown by the service "+ exp.ToString());
}
catch (Exception exp)
{
Console.WriteLine(exp.ToString());
}
В вышеупомянутом случае catch (FaultException exp) (первый блок catch с ArgumentExceptionв коде клиента) блок не выполняется.Однако, когда я удаляю ArgumentException, чтобы иметь catch (FaultException exp), выполняется тот же самый блок catch.Я не уверен в этом, поскольку выкидываю исключение FaultException из своего контракта на эксплуатацию.Я что-то здесь упускаю.
Благодарим Вас за помощь, Ашиш
РЕДАКТИРОВАТЬ: - Когда я обновил ссылку на службу в моем клиенте, я смог поймать исключение FaultException<ArgumentException>
.