我偶然發現了類似的東西在我們的代碼中的以下...在什麼情況下C#'是'關鍵字拋出異常?
protected bool IsThing(object item)
{
try
{
return item is Thing;
}
catch (Exception)
{
return false;
}
}
我試圖找出是否有在此catch
將永遠被訪問任何情況下?
我偶然發現了類似的東西在我們的代碼中的以下...在什麼情況下C#'是'關鍵字拋出異常?
protected bool IsThing(object item)
{
try
{
return item is Thing;
}
catch (Exception)
{
return false;
}
}
我試圖找出是否有在此catch
將永遠被訪問任何情況下?
is
關鍵字永不拋出異常。 這是一個無用的方法,你應該刪除它。
if(IsThing(item)) {...}
可以和應與if(item is Thing) { ... }
當然''is'語句只返回一個布爾值 – 2013-12-23 11:57:02
我認爲原來的措辭是完全有效的;) – gingerbreadboy
@gingerbreadboy哈哈,我想誰寫這個方法是爲了[確保終身工作](https ://www.thc.org/root/phun/unmaintain.html) – dcastro
的「是」整點替換關鍵字是不會發生異常! http://msdn.microsoft.com/en-us/library/scekt9xw.aspx
是的,我看了這個MSDN條目,但它沒有明確指出沒有例外可以拋出'is',所以我來到這裏與我的問題。雖然謝謝:) – gingerbreadboy
該捕獲是無用的。異常應該用一個throw或者記錄來冒泡。 –
@JonSkeet可以讓is運算符拋出一個異常http://meta.stackexchange.com/questions/9134/jon-skeet-facts –
@DamienJoe,問題不在於什麼異常返回,問題是它可以永遠不會被擊中。 – gingerbreadboy