在 Visual Basic 中配置警告

Visual Basic 编译器提供了有关可能导致运行时错误的代码的警告。 可以使用这些信息编写更加整洁,与 bug 较少的更快,更好的代码。 例如,编译器将生成警告,当用户尝试调用未赋值的对象变量的成员,从函数返回,而无需设置返回值,或执行 Try 块并与该逻辑的错误捕获异常。

有时编译器替用户提供额外的逻辑的,以便用户可以集中精力于手头的任务,而不是在预期可能的错误。 在 Visual Basic的早期版本中, Option Strict 用于限制 Visual Basic 编译器提供的附加逻辑。 配置警告允许您限制此逻辑使用了一种更精细的方式,在单个警告级别。

您可能需要自定义您的项目和关闭这些警告与您的应用程序无关,而将其他警告变为错误。 此页说明如何打开和关闭个别警告。

启用警告和关闭

有两种不同的方式配置警告:使用 项目设计器,可以配置它们,或者可以使用 /warnaserror/nowarn 编译器选项。

项目设计器 页的 编译 选项卡可以打开和关闭警告。 选择 禁用所有警告 复选框禁用所有警告;选择 将所有警告都视为错误 将所有警告视为错误。 有些个别警告在所显示的表中切换为错误或警告按照需要。

Option Strict 设置为 关闭时, Option Strict 相关警告不能视为彼此无关。 当 Option Strict 设置为 时,关联的警告视为错误,,而无论其状态为。 当 Option Strict 设置为 自定义 时通过指定 /optionstrict: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-cn,VS.110).gif隐式转换警告

生成用于隐式转换例程。 ,在使用 & 运算符时,它们不包括从内部数值类型的隐式转换为字符串。 新项目的默认关闭。

ID:42016

3y20cc1z.collapse_all(zh-cn,VS.110).gif后期绑定方法调用和重载决策警告

生成用于后期绑定实例。 新项目的默认关闭。

ID:42017

3y20cc1z.collapse_all(zh-cn,VS.110).gifobject 类型的操作数警告

生成,在 Option Strict On将创建一个错误类型 Object 的操作数出现。 新项目的默认值为 on。

ID:42018 和 42019

3y20cc1z.collapse_all(zh-cn,VS.110).gif声明要求 “As " 子句警告

生成,当缺少 As 子句的变量、函数或属性声明用 Option Strict On将创建一个错误。 没有类型指派给他们的变量假定为类型 Object。 新项目的默认值为 on。

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

3y20cc1z.collapse_all(zh-cn,VS.110).gif可能的 Null 引用异常警告

生成,当使用变量,则赋予 jscriptquerystring wy0zaykqadkoscuvoiqemofm 的值之前。 新项目的默认值为 on。

ID:42104, 42030

3y20cc1z.collapse_all(zh-cn,VS.110).gif未使用的局部变量警告

生成,在声明局部变量,但从未引用。 默认值为 on。

ID:42024

3y20cc1z.collapse_all(zh-cn,VS.110).gif通过实例变量访问共享成员警告

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

ID:42025

3y20cc1z.collapse_all(zh-cn,VS.110).gif递归运算符或属性访问警告

生成,当实例的同一运算符或属性时定义它。 新项目的默认值为 on。

ID:42004 (运算符), 42026 (属性)

3y20cc1z.collapse_all(zh-cn,VS.110).gif没有返回值的函数或运算符警告

生成,当函数或运算符未指定的返回值。 这包括忽略 Set 到的名称来隐式局部变量和函数相同。 新项目的默认值为 on。

ID:42105 (函数), 42016 (运算符)

3y20cc1z.collapse_all(zh-cn,VS.110).gif在模块中使用 overloads 修饰符警告

,会发生 Overloads 用于 Module。 新项目的默认值为 on。

ID:42028

3y20cc1z.collapse_all(zh-cn,VS.110).gif重复或重叠的 catch 块警告

生成,当 Catch 块时从未定义的达到由于它与其他 Catch 的关系块。 新项目的默认值为 on。

ID:42029, 42031

请参见

参考

“异常助手”对话框

Try...Catch...Finally 语句 (Visual Basic)

/nowarn

/warnaserror (Visual Basic)

“项目设计器”->“编译”页 (Visual Basic)

默认情况下关闭的编译器警告

概念

错误类型 (Visual Basic)