我正在实现ConvertDocuments()API。此API采用一组输入文件并将每个文件转换为另一种文件格式。如果任何文档无法转换(可能是一个损坏的文件)我不想通过引发异常关闭整个转换作业。我的类(ConverterError事件)上有一个事件处理程序,使用该用户可以获取错误信息。为了提供有关错误的完整详细信息,我还在事件参数中包含了异常对象。如果我遵循这种模式,我想知道是否有任何缺点。
ConvertDocuments(List<string> InputDocsList, ...)
{
foreach(file in InputDocsList)
{
try
{
Convert(file);
}
catch(exception ex)
{
OnConverterError(new ConverterErrorEventArgs(ex.Message, ex));
}
}
}
OnConverterError(ConverterErrorEventArgs e)
{
EventHandler<ConverterErrorEventArgs> handler = ConverterError;
if (handler != null)
{
handler(this, e);
}
}
class ConverterErrorEventArgs: EventArgs
{
ConverterErrorEventArgs(string message, Exception innerException)
{
...
}
string Message
{
get{...}
}
Exception InnerException
{
get{return innerException}
}
}
答案 0 :(得分:2)
我看不出这种方法存在任何特殊问题,但您可能会将所有异常捆绑到AggregateException
并将其一次性返回。
http://msdn.microsoft.com/en-us/library/system.aggregateexception(v=vs.110).aspx
更新
这是一篇文章的链接,该文章描述了这种使用AggregateException的方式,这可能很有用:http://richhewlett.com/2010/05/12/raising-multiple-exceptions-with-aggregateexception/