2

我正在上一门编程高中课程,我的任务是编写一个使用: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 编写一个也可以使用的方法会更容易,我只是想展示我尝试过的方法,谢谢!

4

1 回答 1

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 的声明。我故意把它放在外面,这通常是你在严肃的应用程序中想要做的。您通常会有一个处于某种状态的对象,试图改变它的状态。如果您的代码失败,您可以显示对象的当前状态并通知尝试执行的操作失败。将其视为最佳实践建议。

于 2014-10-20T20:08:36.713 回答