IEnumerable <exception>的自身异常

时间:2019-04-23 13:08:59

标签: c# exception

我想做出自己的例外,例如AggregateException

var exceptions = ErrorCollectionExtension.GetErrorsAsExceptions(compiler.Errors);
throw new AggregateException("Error", exceptions);
可以作为List的参数Exceptions

public MyException(string message, IEnumerable<Exception> innerExceptions)
        : base(message, innerExceptions)
    {

    }

但是我在innerExceptions的基础上遇到了错误。

如何使用AggregateException这样的集合来使其自身具有异常性?

1 个答案:

答案 0 :(得分:2)

一种方法是通过内部异常的集合简单地扩展Exception类,如下所示:

public class MyException : Exception
{
    private readonly ReadOnlyCollection<Exception> _innerExceptions;

    public MyException(string message, IEnumerable<Exception> innerExceptions)
        : base(message, innerExceptions.FirstOrDefault())
    {
        _innerExceptions = innerExceptions.ToList().AsReadOnly();
    }

    public ReadOnlyCollection<Exception> InnerExceptions => _innerExceptions;
}

或者,您可以仅继承AggregateException并使用其结构:

public class MyException : AggregateException
{

    public MyException(string message, IEnumerable<Exception> innerExceptions)
        : base(message, innerExceptions)
    {
    }
}