算术例外

时间:2014-10-20 20:04:44

标签: vb.net-2010 overflowexception

我正在编程高中课程,我的任务是编写一个使用以下程序的程序:OverflowException或NotFiniteNumberException。它必须是算术的,我已经尝试了所有我能想到的东西,但我似乎无法正确地打印它,所以我假设问题出在我的代码上。这是我尝试过的事情之一:

模块模块1

Sub Main()
    Dim A As Integer = Integer.MaxValue
    Dim B As Integer = A + 1
    Try
        Console.WriteLine("The answer is: ", B)
        Console.ReadLine()
    Catch C As OverflowException
        Console.WriteLine("B is greater than the maximum value ")
        Console.ReadLine()
    End Try
End Sub

结束模块

当我这样做时, 会给出错误信息,但它会显示"未处理的异常",而不是" B大于最大值" ;。显然,我不知道为什么会这样做,所以任何信息都会有很大的帮助。如果建议用NotFiniteNumberException编写一个也可以工作的方法会更容易,我只是想我会展示我尝试过的东西,谢谢!

1 个答案:

答案 0 :(得分:1)

这两行永远不会抛出任何例外:

Console.WriteLine("The answer is: ", B)
Console.ReadLine()

但是,这一行可以:

Dim B As Integer = A + 1

您应该将后者包含在Try / Catch块中,如下所示:

Dim B As Integer
Try
    B = A + 1 
    Console.WriteLine("The answer is: ", B)
    Console.ReadLine()
Catch C As OverflowException
    Console.WriteLine("B is greater than the maximum value ")
    Console.ReadLine()
End Try

请注意,您没有使用B的值,因此您可以在Try / Catch中包含B的声明。我故意把它放在外面,这通常是你想要在严肃的应用程序中做的事情。你通常会有某个状态的对象,试图改变它的状态。如果您的代码失败,您可以显示该对象的当前状态,并通知该尝试的操作未能执行。将其视为最佳实践建议。