Создание пользовательского исключения внутри try catch - PullRequest
3 голосов
/ 20 апреля 2011

Если у меня есть некоторый код внутри большой попытки try, которая в конечном итоге перехватывает OracleException и общий Exception, тогда я не могу выбросить любое пользовательское исключение внутри попытки try, так как оно перехватывается общим Exception.

Что я должен делать в этом случае?

Спасибо

try
{
    // some code
    if(a==b)
    {
        throw new MyCustomException(ex);
    }
}
catch(OracleException ex)
{
    ...
}
catch(Exception ex)
{
    ...
}

Ответы [ 4 ]

5 голосов
/ 20 апреля 2011

Вы имеете в виду, что хотите создать специальное исключение, которое не перехватывается блоком catch-call Exception?

Если это так, попробуйте следующее:

try
{
    throw new MyCustomException();
}
catch (OracleException ex)
{
    // Handle me...
}
catch (MyCustomException)
{
    // Important: NOT `throw ex` (to preserve the stach trace)
    throw;
}
catch (Exception ex)
{
    // Handle me...
}

Любое исключение типа MyCustomException будет перехвачено вторым catch (а не 3-м catch), а затем переброшено.

Обратите внимание, что в целом это плохопопрактиковаться в catch (Exception) - это хороший пример того, почему.Я определенно рекомендую вместо того, чтобы делать вышеприведенное, просто рефакторинг, чтобы вы больше не ловили Exception, что было бы гораздо более удачным решением.

1 голос
/ 20 апреля 2011

проверьте это:

try
{
       ...    
}
catch()
{
       throw new Execption("I'M A NEW EXCEPTION")
}
finally
{
       ...
}
0 голосов
/ 20 апреля 2011

Попробуйте это

catch(OracleException ex)
    {
     throw new MyCustomException(
                  "MyCustomEX error: Unable to ......", ex);
    }
0 голосов
/ 20 апреля 2011

Разве вы не можете просто добавить предложение catch со своим пользовательским исключением?

try
{
    //Lots of code
}
catch (OracleException)
{   
}
catch (MyCustomException)
{
}
catch (Exception)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...