我想做出自己的例外,例如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
这样的集合来使其自身具有异常性?
答案 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)
{
}
}