[英]Is it appropriate to use Factory/delegate pattern to handle exceptions?
[英]Should I handle exceptions in factory pattern class or let them propagate upwards?
我是C#開發人員,我想使用工廠模式來創建表示硬盤上的文件或目錄的對象。 FileInfo和DirectoryInfo是用於此目的的.NET中的類,但是我想擁有自己的包含它們的IFileInfo和IDirectoryInfo接口而不是它們。 使用自定義接口而不是內置類的原因是因為我想添加一些其他屬性,如文件shell圖標等...
所以我想使用工廠模式為文件/目錄路徑的給定字符串創建IFileInfo和IDirectoryInfo的實例。
所以工廠類看起來像:
public class MyFileInfoFactory
{
IFileInfo Create(string filePath)
{
System.IO.FileInfo file = new System.IO.FileInfo(filePath);
// turn FileInfo to my IFileInfo etc...
}
}
現在看一下System.IO.FileInfo文檔( FileInfo MSDN ),我看到有幾種可能的異常可以拋出。 我的問題是我應該在工廠Create()方法中處理所有這些異常嗎? 或者我應該讓它們向上傳播到調用MyFileInfoFactory.Create()的代碼?
如果第一個解決方案是可行的,那么下一步將是什么? 例如,我應該返回null還是可能拋出一些自定義異常,並將InnerException屬性設置為從新FileInfo()構造函數拋出的實際異常?
只是想知道在這個具體情景案例中最佳做法是什么......
一般情況下,您應該在兩種情況下處理異常:
innerException
參數包含在內),這將innerException
。 因此,對於任何可能拋出的異常(並且不認為MSDN中的異常列表是詳盡的...很多東西都是樣板文件,不幸的是),如果你不知道如何從中恢復默默地並且不想將它包裝在你自己的異常中,然后不要處理它並讓它冒泡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.