【问题标题】:Is this a VB.NET Arithmetic exception?这是 VB.NET 算术异常吗?
【发布时间】:2011-04-26 03:30:51
【问题描述】:

好的,这是我的老师要求我做的。编写一个基本程序,使用其中一个算术异常(除了将数字除以零)对您在本课中看到的程序进行建模。然后,在第二个程序中,编写一个不会产生错误的程序。

本课中出现的是 DivideByZeroException、NotFiniteNumberException 和 OverflowException。

编辑:我不能使用 DivideByZeroException。

我是初学者,所以对编程了解不多。我正在上高中课,所以请耐心等待。

【问题讨论】:

  • 我不能使用 DivideByZeroException。如果这就是你所指的。
  • 你是想创建一个异常,还是只是想写一些代码而不抛出异常??
  • 我正在尝试创建算术异常。
  • @MitchWheat 对不起我的废话。感谢您的时间和帮助。

标签: vb.net exception math


【解决方案1】:

巴拉的回答很接近:

Dim j As Integer = Integer.MaxValue + 1 '<-- doesn't compile

这确实会溢出,但它不会编译,因为编译器检测到我们正在尝试分配一个不适合整数的值。

如果我们将变量传递给它,那么编译器不会对该变量的值做出任何假设,因此代码会编译。它会在运行时以OverflowException 失败。

Dim i As Integer = Integer.MaxValue
Dim j As Integer = i + 1 '<--  OverflowException at runtime

【讨论】:

    【解决方案2】:

    我建议在这里阅读ArithmeticException 上的文档:

    http://msdn.microsoft.com/en-us/library/system.arithmeticexception.aspx

    ArithmeticException 有 3 个子类,您可以在上面的链接中了解它们。

    • DivideByZeroException
    • NotFiniteNumberException
    • OverflowException

    最容易产生的是 DivideByZeroException - 只需将一个 int 除以零。这可能是一个很好的尝试。对于其他人,请阅读导致它们的原因并尝试创建与描述相匹配的场景。

    【讨论】:

    • AFAIK NotFiniteNumberException 不会出现在 C# 中,我相信同样适用于 vb.net
    【解决方案3】:

    试试

    Dim j As Integer = Integer.MaxValue + 1
    

    这将导致OverflowException

    【讨论】:

    • 嘿,这还能编译吗?我不这么认为
    • 不编译,但很容易欺骗编译器:“Dim i As Integer = Integer.MaxValue”,然后“Dim j As Integer = i + 1”
    • @Meta-Knight 您能否将其发布为答案,以便我将其选为最佳答案?
    猜你喜欢
    • 1970-01-01
    • 2017-09-08
    • 2021-03-29
    • 2014-12-16
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    相关资源
    最近更新 更多