2016-06-27 45 views
2

我有很多這在我的代碼:一種方法拋出一個異常,並記錄它

if (labelType == null) 
{ 
    var errorMessage = "Invalid Label Type Id Look up: " + labelTypeId; 
    log.Error(errorMessage); 
    throw new ApplicationException(errorMessage); 
} 

我願做這樣的事情:

FailureActions.Fail("Invalid Label Type Id Look up: " + labelTypeId); 

而且Fail方法將封裝上述邏輯。

但是,這種混亂將流控制邏輯。編譯器不再意識到我在拋出一個異常。

是否有另一種方法來壓縮此代碼? (與編譯器的流程分析一起工作)

回答

8

使您的記錄器方法返回異常。

然後,您可以編寫

throw FailureActions.Fail("Invalid Label Type Id Look up: " + labelTypeId); 

請注意,如果你忘了爲調用添加throw(特別是如果你的方法返回void),您的異常會被丟棄。
爲了解決這個問題,你可以讓你的方法也是throw的例外(但仍然返回它,以便該調用網站可以寫入throw)。

+0

工作完美。謝謝! – Vaccano

相關問題