共用方式為


選擇何時使用結構化和非結構化例外處理

更新:2007 年 11 月

結構化例外處理 (Structured exception handling) 就是使用包含例外狀況的控制項結構、隔離的程式碼區塊及篩選條件來建立例外處理機制。這讓程式碼可以區別不同錯誤類型並且視情況作出反應。在非結構化例外處理中,程式碼開端的 On Error 陳述式會處理所有例外狀況。

備註

結構化例外處理比非結構化例外處理具有更多用途、更穩固且更具彈性。可以的話,請盡可能使用結構化例外處理。然而,在下列情況下您可能會使用非結構化例外處理:

  • 您正在升級使用較早的 Visual Basic 版本所撰寫的應用程式。

  • 您正在開發應用程式的預備或草稿版本,不介意程式是否無法正常關閉。

  • 您可以明確預知什麼情況會造成例外狀況。

  • 期限快到了,您必須使用快捷的方法,也願意犠牲彈性以求快速完成。

  • 程式碼很瑣碎或非常短,您只需要測試會產生例外狀況的程式碼分支。

  • 您必須使用結構化例外處理不支援的 Resume Next 陳述式。

您無法在相同函式中合併結構化與非結構化例外處理。如果您使用 On Error 陳述式,就不能在相同的函式中使用 Try...Catch 陳述式。

無論您選擇哪種方式來處理程式碼內的例外狀況,您必須採取步驟回頭檢查程式碼提出的假設狀況。例如,當應用程式要求使用者輸入電話號碼時,下列假設開始生效:

  • 使用者會輸入數字而不是字元。

  • 數字具有特定格式。

  • 使用者不會輸入空字串。

  • 使用者只有一個電話號碼。

使用者輸入的內容有可能會違反上面的任何或所有假設。健全的程式碼需要充分的例外處理,讓應用程式可以在這樣的違規情況下正常復原。

除非您可保證在任何情況下方法決不會擲回例外狀況,否則請使用可以提供資訊的例外處理。例外處理應有意義。除了說明發生問題外,例外處理產生的訊息還應指出發生問題的原因及位置。只指出「已發生錯誤」而未提供足夠資訊的訊息只會讓使用者感到挫折。

請參閱

工作

例外處理疑難排解

概念

錯誤類型

Visual Basic 的結構化例外處理概觀

非結構化例外處理概觀