在我当前的项目中有一些组件/库被设计为适配器。
例如,一个适配器将IO访问封装到文件系统。异常处理设计
在实际的异常处理设计中,适配器必须抛出特定的异常,如FileSystemFileNotFoundException
。
适配器特定异常必须从适配器基本异常派生。
主要原因是开发人员有一个相对较好的方法来捕获所有适配器特定的异常。
有时,基本例外提供了额外的信息,如果IO适配器有一个源文件和一个目标文件属性,它保存每个文件的完整路径和文件名。
主应用程序有三个不同的场景的三个自己的基本例外。
有几个适配器从主应用程序调用。
现在,每个适配器都需要他自己的主应用程序中的异常映射逻辑。
从适配器映射到应用程序异常类型,对附加异常信息等进行一些工作。
下面的代码,目前需要有图有目标异常
var map = new Dictionary<Type, Type>()
{ typeof(FileAlreadyExistsTechnicalException) } };
var fileSystemAdapterException = ex as FileSystemAdapterBaseException;
if (fileSystemAdapterException != null)
{
var exception = from mapping in map
where mapping.Key.Equals(fileSystemAdapterException.GetType())
select mapping.Value;
var baseTechnicalException = (TechnicalException)Activator.CreateInstance(exception.Single());
baseTechnicalException.AddPlaceholderEntry(ExceptionPlaceholderConstants.File, fileSystemAdapterException.SourceFile);
resultException = baseTechnicalException;
}
return resultException;
1.源)这是一个好的设计?
2.)这个映射如何推广?
我首先想到了AutoMapper,但是他能否给我提供额外信息做额外工作的可能性?