Я знаю, что это старый пост, но решение gideon выдает исключительную ссылку Unity исключение .И я хочу обработать Исключение в вызывающем абоненте, а не в Перехвате Unity.
Вот рабочее решение, которое создает исключение в вызывающем абоненте, а не в Перехвате:
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
IMethodReturn ret = getNext()(input, getNext);
if (ret.Exception != null)
{
// Throw the Exception out of the Unity Interception
ExceptionDispatchInfo.Capture(ret.Exception).Throw();
}
// Process return result
return ret;
}
Затем, когда вы вызываете свой перехваченный метод, вы можете получить исключение:
try
{
// Method intercepted by Unity pipeline
InterceptedMethod();
}
catch(Exception e)
{
//Exception handling
}