2013-12-23 106 views
4

我偶然發現了類似的東西在我們的代碼中的以下...在什麼情況下C#'是'關鍵字拋出異常?

protected bool IsThing(object item) 
    { 
     try 
     { 
      return item is Thing; 
     } 
     catch (Exception) 
     { 
      return false; 
     } 
    } 

我試圖找出是否有在此catch將永遠被訪問任何情況下?

+0

該捕獲是無用的。異常應該用一個throw或者記錄來冒泡。 –

+2

@JonSkeet可以讓is運算符拋出一個異常http://meta.stackexchange.com/questions/9134/jon-skeet-facts –

+1

@DamienJoe,問題不在於什麼異常返回,問題是它可以永遠不會被擊中。 – gingerbreadboy

回答

14

is關鍵字永不拋出異常。 這是一個無用的方法,你應該刪除它。

if(IsThing(item)) {...}可以和if(item is Thing) { ... }

+0

當然''is'語句只返回一個布爾值 – 2013-12-23 11:57:02

+0

我認爲原來的措辭是完全有效的;) – gingerbreadboy

+1

@gingerbreadboy哈哈,我想誰寫這個方法是爲了[確保終身工作](https ://www.thc.org/root/phun/unmaintain.html) – dcastro

相關問題