考慮這個功能:「曖昧找到匹配」時,動態扔「System.ArgumentException」
static void Throw<T>(string message) where T : Exception
{
throw (T)Activator.CreateInstance(typeof(T), message, (Exception)null);
}
給定類型的System.ArgumentException
T
,作爲問題標題說,我得找到「曖昧匹配的運行時錯誤」。看着爲ArgumentException
的文件,以下是公共構造:
ArgumentException()
ArgumentException(string)
ArgumentException(SerializationInfo, StreamingContext)
ArgumentException(string, Exception)
ArgumentException(string, string)
ArgumentException(string, string, Exception)
鑑於我傳遞到CreateInstance
2個參數,並迫使null
是空Exception
,我努力理解爲什麼它是不匹配上面列表中的第4個構造函數?
爲什麼你不只是'拋出新DerivedException(.. )'而不是調用這個'Throw'方法。除了污染你的調用堆棧外,它似乎沒有增加任何價值。 –
@JakubKonecki,實際上'Throw'是'bool'上的擴展方法。如果(y&z)拋出blah2',有很多代碼是'if(x)throw blah''。擴展方法使這個更清潔,並且(個人)我沒有發現過度污染的調用堆棧,因爲我們知道在哪裏尋找。 –