Member 11589429 Ответов: 1

Как пропустить дальнейшее выполнение, если исключение catch


Я использую веб-приложение.Я aspx-страницу, как API.Из функции я вызываю функцию 2. обе функции имеют блок try и catch.

Function1()
    {
      try
      {
        int b = function2()
      }
      catch(Exception ex)
      {
        Response.Write(ex.Tostring());
      }

    }

   public int Function2()
    {
      int a= 0;
      try
      {
        a=8;
       return a;
      }
      catch(Exception ex)
      {
       Response.Write(ex.Tostring());
       return a;
      }

    }


Я хотел пропустить дальнейшего исполнения(функция1) если ловить ошибки во второй функции.я могу использовать перерыв в второй функции блока catch.

Что я уже пробовал:

Function1()
    {
      try
      {
        int b = function2()
      }
      catch(Exception ex)
      {
        Response.Write(ex.Tostring());
      }

    }

   public int Function2()
    {
      int a= 0;
      try
      {
        a=8;
       return a;
      }
      catch(Exception ex)
      {
       Response.Write(ex.Tostring());
       return a;
      }

    }

1 Ответов

Рейтинг:
5

OriginalGriff

Самое простое решение-повторно выбросить исключение, чтобы оно попало в обработчик Function1:

public int Function2()
    {
    int a= 0;
    try
       {
       a=8;
       return a;
       }
    catch(Exception ex)
       {
       Response.Write(ex.Tostring());
       throw;
       }
   }

Но если функция Function2 используется в других местах, то у меня возникнет соблазн сделать это так:
public int Function2(bool handleExceptions = true;)
    {
    int a= 0;
    try
       {
       a=8;
       return a;
       }
    catch(Exception ex)
       {
       if (handleExceptions)
           {
           Response.Write(ex.Tostring());
           return a;
           }
       throw;
       }
   }
Затем вы можете вызвать его из функции 1, зная, что он может справиться с этим:
Function1()
    {
    try
        {
        int b = Function2(false);
        }
    catch(Exception ex)
        {
        Response.Write(ex.Tostring());
        }
    }


CPallini

5.