在 Visual Basic 中配置警告

Visual Basic 编译器提供了针对可能导致运行时错误的代码的一组警告。 可以使用这些信息编写 bug 较少的更干净、更快速和更好的代码。 例如,如果用户尝试调用未赋值的对象变量的成员,从未设置返回值的函数返回或者执行有逻辑错误的 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 号,可以将这些错误 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。

警告类型

下面列出了可能要视为错误的警告。

隐式转换警告

为隐式转换实例生成。 在使用 & 运算符时,这些实例不包含从内部数值类型到字符串的隐式转换。 新项目的默认值为 Off。

ID: 42016

后期绑定方法调用和重载决策警告

为后期绑定实例生成。 新项目的默认值为 Off。

ID: 42017

Object 类型的操作数警告

当出现将产生针对 Option Strict On 的错误的 Object 类型的操作数时生成。 新项目的默认值为 On。

ID: 42018 和 42019

声明需要“As”子句警告

当缺少 As 子句的变量、函数或属性声明会产生针对 Option Strict On 的错误时生成。 假定未指定类型的变量属于类型 Object。 新项目的默认值为 On。

ID: 42020 (变量声明)、 42021 (函数声明) 和 42022 (属性声明)。

可能的 null 引用异常警告

当尚未向变量赋值就使用该变量时生成。 新项目的默认值为 On。

ID: 42104, 42030

未使用的局部变量警告

当声明了局部变量但从未引用该变量时生成。 默认值为 On。

ID: 42024

通过实例变量访问共享成员警告

当通过可能有副作用的实例访问共享成员时,或者当通过不是表达式右侧或正作为参数传入的实例变量访问共享成员时生成。 新项目的默认值为 On。

ID: 42025

递归运算符或属性访问警告

当例程体使用定义它的同一运算符或属性时生成。 新项目的默认值为 On。

ID: 42004 (总机),42026 (属性)

没有返回值的函数或运算符警告

当函数或运算符未指定返回值时生成。 这包括忽略与函数同名的隐式局部变量的 Set。 新项目的默认值为 On。

ID: 42105 (函数)、 42016 (总机)

在模块中使用 Overloads 修饰符警告

在 Module 中使用 Overloads 时生成。 新项目的默认值为 On。

ID: 42028

重复或重叠的 Catch 块警告

当因某个 Catch 块与其他已定义的 Catch 块相关联而从未到达该块时生成。 新项目的默认值为 On。

ID: 42029, 42031

请参见

任务

如何:启用或禁用编译器警告 (Visual Basic)

参考

“异常助手”对话框

/nowarn

/warnaserror (Visual Basic)

Compiler Warnings That Are Off by Default

概念

错误类型 (Visual Basic)

其他资源

异常处理任务 (Visual Basic)