Одним из способов может быть реализация структуры перехвата, такой как 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.