首页 新闻 会员 周边 捐助

IOC组件Unity的IInterceptionBehavior中IMethodReturn异常如何处理?

0
悬赏园豆:10 [已解决问题] 解决于 2016-03-18 13:24

    public partial class LogBehavior : IInterceptionBehavior
    {
        public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
        {
            var result = getNext()(input, getNext);
            // 获取异常
            if (result.Exception != null)
            {
                // 异常不设置为空时,将会死循环调。

                // 但设置为空时,异常不会向上抛出

                // 我想达到的效果是向上抛出异常,求正解
                result.Exception = null;
            }

Tryc的主页 Tryc | 初学一级 | 园豆:195
提问于:2016-03-17 14:09
< >
分享
最佳答案
1

直接把exception拿出来throw出去啊。

收获园豆:10
Daniel Cai | 专家六级 |园豆:10424 | 2016-03-17 17:22

throw之后异常内容就变了,不想变啊。

Tryc | 园豆:195 (初学一级) | 2016-03-17 18:01

@Tryc: input.CreateExceptionMethodReturn(result.Exception)

Daniel Cai | 园豆:10424 (专家六级) | 2016-03-17 18:11

@Tryc: ps下,你这个是aop,不是ioc。

Daniel Cai | 园豆:10424 (专家六级) | 2016-03-17 18:14

@Daniel Cai: 这个和直接throw一样的,我想把原来StackTrace中异常的错误代码行扔出来。除了result.Exception.ToString(),还有其他方法不?

Tryc | 园豆:195 (初学一级) | 2016-03-17 20:33

@Tryc: 以innerException存放这个异常,然后throw出去,外边catch的时候即可看到内部异常完整堆栈。

Daniel Cai | 园豆:10424 (专家六级) | 2016-03-18 09:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册