就像這個例子:分支理論上無法達到什麼樣的例外情況?
public MatchResult GetResult(int home, int away)
{
if (home == away)
return MatchResult.Draw;
else if (home > away)
return MatchResult.HomeWins;
else if (home < away)
return MatchResult.AwayWins;
throw new Exception("Should be impossible");
}
我知道我可以用else
上次語句解決這個問題,但我常常希望還是明確。舉例來說,這當然是一個簡化的情況。
下一頁到:就是編譯器會引發not all code paths return a value
的原因,因爲情況是編譯器或因爲其他原因太複雜了(就像我們可以在理論上通過從非託管代碼更改home
中途的值不同的線程或東西?)
我不能看到編譯器如何生成錯誤從你的代碼中,因爲所有分支都有一個返回值或者至少有一個異常。然而,你的第一個問題是基於意見的,因此將被關閉。無論如何:一個參數怎麼可能不相等,更大或更小呢?你認爲如何才能達到這個例外? – HimBromBeere
說到這種代碼分析工具(如ReSharper)可能會將您的異常代碼標記爲無法訪問,您應該將其刪除。 – HimBromBeere
ReSharper也不會檢測到這一點,只是測試它。 –