2

私はプログラミング高校のコースにいて、OverflowException または NotFiniteNumberException を使用するプログラムを作成することを割り当てられています。それは算術的でなければならず、考えられることはすべて試しましたが、正しく印刷できないように見えるので、問題は私のコードにあると思います。これは私が試したことの1つです:

モジュール Module1

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

次の 2 行では、例外がスローされることはありません。

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 に答える