2013-12-23 4 views
4

나는 어떤 상황에서 C# 'is'키워드가 예외를 throw 할 수 있습니까?

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

내가이 catch 이제까지 방문 할 것입니다있는 어떤 상황이있을 경우 해결하기 위해 노력하고있어 ... 우리의 코드베이스에서 다음과 같이 우연히?

+0

캐치는 쓸모가 없습니다. 예외는 던지거나 기록 된 것을 버블 링해야합니다. –

+2

@JonSkeet은 is 연산자가 예외를 throw하도록 만들 수 있습니다. http://meta.stackexchange.com/questions/9134/jon-skeet-facts –

+1

@DamienJoe, 문제는 예외가 반환하는 것이 아니며 문제는 가능한 것입니다. 절대로 안타. – gingerbreadboy

답변

14

is 키워드는 절대로 예외를 throw하지 않습니다. 그건 쓸모없는 방법이고 그것을 제거해야합니다.

if(IsThing(item)) {...}가와 (가) '이다'의 if(item is Thing) { ... }

+0

물론,'is' 문은 부울 값만 반환합니다 –

+0

원본 문구의 정서는 완벽하게 유효하다고 생각합니다. – gingerbreadboy

+1

@gingerbreadboy 하하, 나는 그 방법을 쓴 사람이 [일자리를 보장하려고 노력하고 있었다] (https : //www.thc.org/root/phun/unmaintain.html) – dcastro

3

요점으로 교체해야합니다 수 있습니다 키워드는 예외가 발생하지 않을 것입니다! http://msdn.microsoft.com/en-us/library/scekt9xw.aspx

+0

그래,이 msdn 항목을 보았지만 명시 적으로 'is'가 던져 질 수있는 예외가 없다는 것을 명시하지 않았으므로 여기에 내 질문을했다. 그래도 고마워 :) – gingerbreadboy

관련 문제