2011-10-06 4 views
0

흥미로운 코드를 최근에 보았습니다. 그리고 내 마음이 TDWTF에서 볼 수있는 것과 비슷한 것이라고 판단했습니다.답장을 둘러보세요.

그러나 코드를 변경하기 전에 필자는 여기에 이유가있을 경우를 대비하여 작성하지 않았으므로 여기에서 묻습니다.

public function SomeFunction() As SomeType 
    Dim someResult As New SomeType 

    // Some code here, where some result can't become nothing. 

    try 
     return someResult 
    catch ex As Exception 
     // Some logging code 

     return Nothing 
    end try 
end function 

내 첫 인상은 예외를 던져 같은 줄에 다른 작업과 간단한 복귀 불가능하다고이며,이 코드는 불필요하다고.

그러나 도달 할 수없는 코드에 대한 컴파일러 경고가 없으므로 가능한 경우 궁금한 점이 있습니다.

? 그렇다면 일어날 수있는 사건은 무엇입니까?

+1

그럴만한 이유가 없습니다. 어쩌면 오타 일 수도 있습니다. –

+2

그럴 가능성이 있습니다. 아마도 Try 블록에 코드가 한 번 더 제거되어 개발자가 전체 try/catch를 제거하지 않을 것이라고 생각했을 것입니다. –

답변

2

아니요 가능하지 않다고 생각합니다. 컴파일러는이 문이 실패 할 수 없다는 것을 단순히 알지 못하므로 경고를 발행 할 수 없습니다.

1

SomeResult가 속성 인 경우 예외를 throw 할 수 없다고 생각할 이유가 없습니다. "this"의 필드 일지라도 null 참조 인 "this"를 사용하여 메서드를 호출 할 수있는 방법이 있습니다. 확실히 대부분의 그런 경우는 null 자체를 반환하여 메서드가 혼란스럽게 시도해서는 안되는 충분히 심각한 문제를 나타내지 만 적어도 catch가 실행할 수는 있습니다.

+0

좋은 지적이지만, 그것이 합리적 이었을지도 모릅니다. –

관련 문제