public partial class LogBehavior : IInterceptionBehavior
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
var result = getNext()(input, getNext);
// 获取异常
if (result.Exception != null)
{
// 异常不设置为空时,将会死循环调。
// 但设置为空时,异常不会向上抛出
// 我想达到的效果是向上抛出异常,求正解
result.Exception = null;
}
直接把exception拿出来throw出去啊。
throw之后异常内容就变了,不想变啊。
@Tryc: input.CreateExceptionMethodReturn(result.Exception)
@Tryc: ps下,你这个是aop,不是ioc。
@Daniel Cai: 这个和直接throw一样的,我想把原来StackTrace中异常的错误代码行扔出来。除了result.Exception.ToString(),还有其他方法不?
@Tryc: 以innerException存放这个异常,然后throw出去,外边catch的时候即可看到内部异常完整堆栈。