Спасибо за ответ ... Мне удалось найти это решение
@ joel .... thnx для soln ... как видите, выброшенное исключение не может завершить программу .... оно должно продолжаться после регистрации исключения ..
вот мой код
Я как-то до сих пор чувствую, что это может / шуд быть подвергнуто дальнейшему рефакторингу. !! я просто не знаю как: (
любые предложения по дальнейшему упрощению этого ..
Примечание. Если определенная функция выдает исключение, общий результат должен быть ложным ... но он должен продолжать выполнять другие функции, чтобы проверить, не сработает ли какая-либо другая функция ...
Кроме того, функция, упомянутая здесь, только для иллюстрации, реальные методы более cmplx
class Program
{
public static void Main()
{
ExecuteTask task1 = Function1;
ExecuteTask task2 = Function2;
ExecuteTask task3 = Function3;
bool result = true;
int param1 = 2, param2 = 3, param3 = 4;
MyTest(task1, ref result, ref param1);
MyTest(task2, ref result, ref param2);
MyTest(task3, ref result, ref param3);
Console.WriteLine("final result is " + result.ToString());
Console.ReadLine();
}
private delegate void ExecuteTask(ref int x);
private static void MyTest(ExecuteTask task, ref bool result1, ref int param1)
{
try
{
task(ref param1);
}
catch (Exception e)
{
Console.WriteLine("Caught exception for " + e.Message);
result1 = false;
}
return result1;
}
public static void Function1(ref int x)
{
Console.WriteLine("Sum is calculated");
x = x + x;
}
public static void Function2(ref int x)
{
Console.WriteLine("Difference is calculated ");
x = (2 * x - x);
}
public static void Function3(ref int x)
{
//Console.WriteLine("Product is calculated ");
//x = x * x;
throw new ArgumentOutOfRangeException();
}
}