我想知道是否有合理的方法來定製.NET框架引發的異常的消息?以下是我經常編寫的一段代碼,可以在許多不同的場景中實現爲用戶提供合理的異常消息的效果。自定義.NET框架生成的異常消息?
public string GetMetadata(string metaDataKey)
{
// As you can see, I am doing what the dictionary itself will normally do, but my exception message has some context, and is therefore more descriptive of the actual problem.
if (!_Metadata.ContainsKey(metaDataKey))
{
throw new KeyNotFoundException(string.Format("There is no metadata that contains the key '{0}'!", metaDataKey));
}
// This will throw a 'KeyNotFoundException' in normal cases, which I want, but the message "The key is not present in the dictionary" is not very informative. This is the exception who's message I wish to alter.
string val = _Metadata[metaDataKey].TrimEnd();
return val;
}
正如你所看到的,我本質上是生產重複代碼只是爲了使用不同的(更好的)消息。
編輯:
我所尋找的,基本上是這樣的:
KeyNotFoundException.SetMessage("this is my custom message!")
{
// OK, now this will send off the message I want when the exception appears!
// Now I can avoid all of that silly boilerplate!
string val = _Metadata[metaDataKey].TrimEnd();
}
無論如何,我不認爲這樣的功能存在,但如果它沒有我會確實非常高興。有沒有人處理過這種類型的問題?它看起來像我要結束需要一些類型的擴展方法到最後...
我想每個人都錯過了這個問題。我知道當我嘗試訪問字典時會出現'KeyNotFound'。我只是想改變這個EXCEPTION包含的信息。我不覺得它是非常有用的做檢查自己,或抓住原來的例外。 – 2011-06-02 17:10:10