Как исключение может пробиться через блок try \ catch? - PullRequest
1 голос
/ 29 сентября 2010

Цитата из книги «Искусство юнит-тестирования»:

В Rhino Mocks строгие насмешки создаются путем вызова StrictMock метод. Неожиданные исключения вызова метода всегда будут выброшены, даже если ваш тест содержит глобальное предложение try-catch, которое вы подумали бы поймает такое исключение, выброшенное из структуры изоляции.

Так как именно я могу реализовать это поведение в моей собственной программе?

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

У вас никогда не должно быть такого сценария в вашем приложении, поскольку вы не должны ловить глобальные исключения.Вы должны ловить только тот тип исключений, который вы собираетесь обработать, все остальное должно быть разрешено всплывать.

0 голосов
/ 29 сентября 2010

Одним из способов может быть реализация структуры перехвата, такой как Unity.Interception (также существуют другие, например, из Castle).

Используя Unity.Interception, вы можете написать реализацию ICallHandler, которая имеет метод Invoke, где вы можете перехватывать и перебрасывать исключения:

public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    var methodReturn = getNext().Invoke(input, getNext);

    // did the method raise an exception?
    if (methodReturn.Exception != null)
    {
        // handle it... re-throw it if necessary...
    }
}

Конечно, углубиться в исходный код Rhino.Mocks было бы самым прямым способом сделать это. Как минимум, используйте Reflector и просмотрите dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...