在我當前的項目中有一些組件/庫被設計爲適配器。
例如,一個適配器將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,但是他能否給我提供額外信息做額外工作的可能性?