Для того, чтобы он попадал в область действия вызывающего пользовательского интерфейса, вам нужно будет сгенерировать исключение после того, как оно было перехвачено, или, что еще лучше, не выбрасывать его вообще - поскольку деление на ноль вызовет бросок CLRисключение при необходимости.Здесь можно выполнить простые проверки, в то время как Calc
вызов API может по-прежнему выдавать исключение.
Например, просто проверьте данные перед вызовом Calc
:
if (a > 0 && b > 0)
{
var result = Calc(a, b);
}
else
{
//tell the user to input valid data
}
В методе Calc
вы можете выполнить аналогичную проверку и сгенерировать соответствующее исключение:
public int Calc(int a, int b)
{
if (a <= 0) throw new ArgumentException("appropriate message here");
if (b <= 0) throw new ArgumentException("appropriate message here");
...
}
Идея здесь состоит в том, чтобы предотвратить деление на ноль, но это может быть немного чрезмернымв вашем случае, как показывает предыдущий пример, вы можете по существу обеспечить такое же поведение, однако теперь вам нужно перехватить исключение:
try
{
var result = Calc(a, b);
}
catch //use appropriate exception catches
{
//tell the user to input valid data
}