2009-04-22 33 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做什麼?

可能只是「嗯,什麼事?」 ......

我想讓它可讀沒有我想想,就像現在......

+0

感謝您的回覆.. 我現在是.. .. 繼續前進...... – Sung 2009-04-22 18:34:11

回答

13

錯誤處理程序?不知道爲什麼沒有任何,你知道,錯誤處理在那裏。

+0

擊敗我10秒。 – 2009-04-22 18:29:13

+0

@Ryan:我認爲你是對的... 經過很長一段時間的代碼,我沒有想到「錯誤處理程序」... 謝謝。 @Paul:+1進行猜測;) – Sung 2009-04-22 18:32:20

4

「*** ***ê*** 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」? – 2009-04-22 18:34:37

0

「有趣」的設計。它看起來像一個在調試過程中放置​​斷點的地方,但它創造性地令人困惑。

0

我會冒險猜測它是一種模式,它允許函數的代碼剛剛結束,而不必跳過任何錯誤處理邏輯,而且如果函數寫入器沒有退出函數聲明。

因此,您可以將eh_Exit中的所有內容粘貼到任何函數中,而無需更改該函數中的其餘代碼。