2009-04-22 3 views
0

Я собирался реорганизовать этот следующий код VB6 (написанный кем-то еще).Угадайте эту метку goto

Public Function GetValue(ID As Long) As Boolean 
    On Error GoTo eh 

    '' ... DAL Logic... 

eh_Exit: 
    On Error GoTo 0 
    Exit Function 
eh: 
    Resume eh_Exit 
End Function 

Что вы думаете о намерении оригинального автора был на этикетке eh?

Наверное просто «да, что-то случилось?» ... Handler

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

+0

Спасибо за ответ .. Я сейчас .. Перемещение ... – Sung

ответ

13

Ошибка? Не знаю, почему нет, знаете ли, ошибка обработки там.

+0

Ударьте меня на 10 секунд. –

+0

@ Ryan: Я думаю, что вы правы ... После долгого просмотра кода я не думал о «обработчике ошибок» ... Спасибо. @Paul: +1 для угадывания;) – Sung

4

"*** E *** rror *** H *** Andler"

Моя первая работа C, каждая функция была метка вниз вблизи дна под названием "err_exit". Любое условие ошибки, которое не удалось обработать локально, было обнаружено и обработано с помощью «if (error ...) goto err_exit;». Кроме того, все наши функции вернули либо 0 в хорошем состоянии, либо -1 при ошибке.

В теории, err_exit был там, чтобы сделать некоторые очистки, но на практике большинство наших функций, как закончился

return 0; 
err_exit: 
    return -1; 
+0

Joel, я не знаю, почему вы заглавили мой «обработчик ошибок», поскольку метка «eh» не «EH»? –

+0

@ Джоэль: Ах, Джоэл .. Приятное прикосновение. – Sung

0

«Интересный» дизайн. Это похоже на место, где можно поставить точку останова во время отладки, но это творчески запутанно.

+0

Увидев экран слишком долго, такие акронимы, похоже, нервничают, и я должен * подумать *, чтобы понять, что это значит. Поэтому я собираюсь изменить их все на «ErrorHandler _» ... – Sung

+0

@ dance2die, вы также можете реорганизовать функцию. –

+0

@ Даниэль: Я нахожусь на нем. – Sung

0

Я бы рискнул предположить, что это шаблон, который позволяет коду функции просто закончить и не должен пропускать какую-либо логику обработки ошибок, но также прекратить изящество, если у автора функции не было выхода Оператор функции.

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

Смежные вопросы