Попробуй поймать ответное заявление - PullRequest
0 голосов
/ 07 октября 2011

Недавно я увидел интересный кусок кода, и мое мнение сразу пришло к выводу, что это будет похоже на то, что я вижу в 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

Мое первое впечатление, что было бы невозможно для простого возврата без других операций в той же строке, чтобы броситьисключение, и что этот код не нужен.

Однако компилятор не предупреждал о недостижимом коде, поэтому у меня возник вопрос, возможно ли это вообще.

Так ли это?Если так, то в каком случае это могло бы произойти?

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Нет, я не думаю, что это возможно. Компилятор просто не знает, что этот оператор не может завершиться ошибкой, поэтому он не может выдавать предупреждение.

1 голос
/ 07 октября 2011

Если SomeResult является свойством, нет никаких оснований полагать, что оно не может вызвать исключение.Даже если это поле «this», существуют способы вызова методов, при этом «this» является пустой ссылкой.Надо отметить, что в большинстве таких случаев будет указана достаточно серьезная проблема, которую метод не должен пытаться запутать, возвращая сам ноль, но по крайней мере это возможно для выполнения catch.

...