在 Visual Basic 中設定警告

Visual Basic 編譯器會包含一組警告,這組警告與可能會造成執行階段錯誤的程式碼有關。您可以使用該項資訊,撰寫更簡潔、更快速、更好且錯誤更少的程式碼。例如,當使用者嘗試叫用 (Invoke) 未指派之物件變數的成員時、從未設定傳回值的函式傳回時,或執行 Try 區塊但攔截例外狀況的邏輯有錯誤時,編譯器就會產生警告。

編譯器有時會自行代表使用者提供額外的邏輯,讓使用者能將焦點放在手邊的工作,而不必浪費精力在預期的可能錯誤上。在舊版的 Visual Basic 中,Option Strict 是用於限制 Visual Basic 編譯器所提供的額外邏輯。設定警告可以讓您在個別的警告層級上,以更細微的方式限制這個邏輯。

您可能會想要自訂專案,關閉與應用程式無關的某些警告,並將其他警告變成錯誤。本頁面會說明如何開啟和關閉個別的警告。

開啟和關閉警告

設定警告的方法有兩種:您可以使用 [專案設計工具] 加以設定,也可以使用 /warnaserror/nowarn 編譯器選項。

[專案設計工具] 頁面的 [編譯] 索引標籤可供您開啟和關閉警告。選取 [停用所有警告] 核取方塊即可停用所有警告,而選取 [將所有警告視為錯誤] 則會將所有警告視為錯誤。有些個別的警告還能在顯示的表格中,視需要切換為錯誤或警告。

當 [Option Strict] 設定為 [Off] 時,就不能將 [Option Strict] 相關的警告視為彼此獨立。當 [Option Strict] 設定為 [On] 時,則不論關聯之警告的狀態為何,都會視為錯誤。在命令列編譯器中指定 /optionstrict:custom 即可將 [Option Strict] 設定為 [Custom],此時可以單獨開啟或關閉 [Option Strict] 警告。

編譯器的 /warnaserror 命令列選項也能用於指定是否要將警告視為錯誤。您可以將逗號分隔的清單加入至此選項,利用 + 或 - 指定哪些警告應被視為錯誤或警告。下表會詳細說明可能的選項。

命令列選項

指定

/warnaserror+

將所有警告都視為錯誤。

/warnsaserror-

不要將警告視為錯誤,這是預設值。

/warnaserror+:<warning list>

將特定的警告視為錯誤,在以逗號分隔的清單中,列出這些項目的錯誤 ID 編號。

/warnaserror-:<warning list>

不要將特定的警告視為錯誤,在以逗號分隔的清單中,列出這些項目的錯誤 ID 編號。

/nowarn

不要報告警告。

/nowarn:<warning list>

不要報告指定的警告,在以逗號分隔的清單中,列出這些項目的錯誤 ID 編號。

警告清單會包含應視為錯誤之警告的錯誤 ID 編號,此清單可用於命令列選項,以開啟或關閉特定的警告。如果警告清單包含無效的編號,則會報告錯誤。

範例

下表會列出命令列引數的範例,並描述每個引數的作用。

引數

描述

vbc /warnaserror

指定應該將所有警告視為錯誤。

vbc /warnaserror:42024

指定應該將警告 42024 視為錯誤。

vbc /warnaserror:42024,42025

指定應該將警告 42024 和 42025 視為錯誤。

vbc /nowarn

指定不應該報告任何警告。

vbc /nowarn:42024

指定不應該報告警告 42024。

vbc /nowarn:42024,42025

指定不應該報告警告 42024 和 42025。

警告類型

以下是您可能需視為錯誤的警告清單。

3y20cc1z.collapse_all(zh-tw,VS.110).gif隱含轉換的警告

針對隱含轉換的執行個體而產生。使用 & 運算子,從內建 (Intrinsic) 數字型別 (Numeric Type) 轉換到字串的隱含轉換,並不包含在內。新專案的預設為停用。

ID:42016

3y20cc1z.collapse_all(zh-tw,VS.110).gif晚期繫結方法引動過程和多載解析的警告

針對晚期繫結的執行個體所產生。新專案的預設為停用。

ID:42017

3y20cc1z.collapse_all(zh-tw,VS.110).gif型別 Object 的運算元警告

在發生型別 Object 的運算元時產生,此情況在 Option Strict On 下會產生錯誤。新專案的預設值為啟用。

ID:42018 和 42019

3y20cc1z.collapse_all(zh-tw,VS.110).gif宣告需要 'As' 子句的警告

在變數、函式或屬性宣告缺少 As 子句時產生,此情況在 Option Strict On 下會產生錯誤。未被指派型別的變數,會假設為型別 Object。新專案的預設值為啟用。

ID:42020 (變數宣告)、42021 (函式宣告) 和 42022 (屬性宣告)。

3y20cc1z.collapse_all(zh-tw,VS.110).gif可能的 Null 參考例外狀況警告

變數尚未指派值,就已開始使用時會產生。新專案的預設值為啟用。

ID:42104、42030

3y20cc1z.collapse_all(zh-tw,VS.110).gif未使用的區域變數警告

宣告了區域變數但此變數從未被參考時會產生。預設為啟用。

ID:42024

3y20cc1z.collapse_all(zh-tw,VS.110).gif透過執行個體變數存取共用成員的警告

在透過可能會有副作用 (Side Effect) 的執行個體存取共用成員時產生,或是在透過不在運算式右邊的執行個體變數、或透過當做參數傳入的執行個體變數存取共用成員時產生。新專案的預設值為啟用。

ID:42025

3y20cc1z.collapse_all(zh-tw,VS.110).gif遞迴運算子或屬性存取的警告

當常式的主體所使用的運算子或屬性是用來定義它的相同運算子或屬性時會產生。新專案的預設值為啟用。

ID:42004 (運算子)、42026 (屬性)

3y20cc1z.collapse_all(zh-tw,VS.110).gif函式或運算子沒有傳回值的警告

在函式或運算子未指定傳回值時產生。對與函式同名的隱含區域變數省略 Set 的情形也包含在內。新專案的預設值為啟用。

ID:42105 (函式)、42016 (運算子)

3y20cc1z.collapse_all(zh-tw,VS.110).gifOverloads 修飾詞用於模組中的警告

在 Overloads 用於 Module 中時產生。新專案的預設值為啟用。

ID:42028

3y20cc1z.collapse_all(zh-tw,VS.110).gif重複或重疊的 Catch 區塊警告

因為 Catch 區塊與其他已定義 Catch 區塊之間的關聯設計不良,因此無法到達該區塊時會產生。新專案的預設值為啟用。

ID:42029、42031

請參閱

參考

例外狀況助理對話方塊

Try...Catch...Finally 陳述式 (Visual Basic)

/nowarn

/warnaserror (Visual Basic)

專案設計工具、編譯頁 (Visual Basic)

依預設是關閉的編譯器警告

概念

錯誤類型 (Visual Basic)