Нужно выяснить, как использовать Try, Catch и, наконец, в моем коде?

Я очень начинающий программист, если даже это. Я должен пройти курс программирования в качестве одного из моих классов в старшей школе, поэтому я стараюсь изо всех сил, чтобы пройти через не очень много понимания. С учетом сказанного, пожалуйста, будьте осторожны со мной.

Для проекта мне нужно вернуться к двум программам, которые я создал для предыдущего задания, программе для определения арифметической последовательности и программе для расчета объема куба или сферы.

Первые инструкции - написать программу так, чтобы она просила пользователя определить все переменные. Например, программа попросит пользователя ввести значение длины одной стороны или радиуса для программы Cube and Sphere.

Я полагаю, что я уже сделал это, когда писал программу, но я борюсь со вторым набором направлений, в котором говорится "включить ключевые слова Try, Catch и Наконец, и заставить их функционировать должным образом (т. Е. Если пользователь определяет невозможный расчет, должно быть показано сообщение об ошибке; если нет, должно быть какое-то действие, чтобы указать, что ошибки не было, даже если он просто показывает ответ)".

Я действительно не знаю, как поместить эти утверждения в мой код. Если бы кто-то мог объяснить или дать мне пример их в моем коде, я был бы очень признателен! Вот мой код:

Объем куба или сферы

Sub Main()
    Dim Type As String
    Dim Size As String
    Dim Length_Radius As Double
    Dim Output As Double

    Dim Value As Double
    Console.WriteLine("Would you like to calculate the volume of a (C)ube or a (S)phere? *press either C or S then enter to continue*")
    Type = Console.ReadLine
    Type = Convert.ToString(Type)
    Value = Asc(Type)
    If (Value = 67) Or (Value = 99) Then
        Console.WriteLine("The equation is x^3 where x is the length of a side. What would you like the value of x to be?")
        Size = Console.ReadLine
        Length_Radius = Convert.ToDouble(Size)
        Output = (Length_Radius * Length_Radius * Length_Radius)
        Console.WriteLine("The value of the volume of the Cube is: " & Output & ".")
    ElseIf (Value = 83) Or (Value = 115) Then
        Console.WriteLine("The equation is 4/3*pi*r^3 where r is the radius. What would you like the value of the radius to be?")
        Size = Console.ReadLine
        Length_Radius = Convert.ToDouble(Size)
        Output = ((4 / 3) * 3.14 * (Length_Radius * Length_Radius * Length_Radius))
        Console.WriteLine("The value of the volume of a sphere is: " & Output & ".")
    ElseIf (Value <> 83) Or (Value <> 115) Or (Value <> 67) Or (Value <> 99) Then
        Console.WriteLine("You have inputted an incorrect value.")

    End If

    Console.ReadLine()



End Sub

Арифметическая последовательность

Sub Main()
    Dim Letters As String
    Dim a_n, d, a_one As Double
    Dim Output As Double
    Console.WriteLine("This program will perform the arithmetic sequence (a(n) = a(1) + d(a(n) - 1)")
    Console.WriteLine("What would you like the value of 'a(n)' to be? *The total number of times the sequence will repeat.*")
    Letters = Console.ReadLine
    a_n = Convert.ToDouble(Letters)
    Console.WriteLine("What would you like the value of 'a(1)' to be? *The starting value.*")
    Letters = Console.ReadLine
    a_one = Convert.ToDouble(Letters)
    Console.WriteLine("What would you like the value of 'd' to be? *The number that the equation is multiplied by*")
    Letters = Console.ReadLine
    d = Convert.ToDouble(Letters)
    Output = (a_one + d * (a_n - 1))
    Console.WriteLine("The value of the arithmetic sequence is: " & Output & ".")
    Console.ReadLine()
End Sub

1 ответ

Компьютеры могут столкнуться с проблемой при выполнении операции. Например, если кто-то просит вас вычислить куб x, но вводит x как "abc", компьютер не может этого сделать. Хорошие программы проверяют данные перед выполнением расчетов и стараются аккуратно обрабатывать ошибки, предупреждая пользователя дружественным сообщением среди других возможных действий. В вашем коде вы пишете:

        Size = Console.ReadLine
        Length_Radius = Convert.ToDouble(Size)

Этот код может вызвать ошибку, если вы попробуете нечисловое значение. Лучший способ написать это - использовать метод TryParse, однако для вашего вопроса мы будем использовать Try/Catch. Try/Catch позволяет программе попытаться выполнить одну или несколько команд, и если какая-либо из них вызывает ошибку, элемент управления переходит к той части перехвата, где программист может обработать ошибку.

Применяя эту концепцию к вашему коду, это один из способов использовать Try/Catch:

    Dim Type As String
            Dim Size As String
            Dim Length_Radius As Double
            Dim Output As Double

            Dim Value As Double
            Console.WriteLine("Would you like to calculate the volume of a (C)ube or a (S)phere? *press either C or S then enter to continue*")
            Type = Console.ReadLine
            Type = Convert.ToString(Type)
            Value = Asc(Type)

            Try


            If (Value = 67) Or (Value = 99) Then
                Console.WriteLine("The equation is x^3 where x is the length of a side. What would you like the value of x to be?")
                Size = Console.ReadLine
                Length_Radius = Convert.ToDouble(Size)
                Output = (Length_Radius * Length_Radius * Length_Radius)
                Console.WriteLine("The value of the volume of the Cube is: " & Output & ".")
            ElseIf (Value = 83) Or (Value = 115) Then
                Console.WriteLine("The equation is 4/3*pi*r^3 where r is the radius. What would you like the value of the radius to be?")
                Size = Console.ReadLine
                Length_Radius = Convert.ToDouble(Size)
                Output = ((4 / 3) * 3.14 * (Length_Radius * Length_Radius * Length_Radius))
                Console.WriteLine("The value of the volume of a sphere is: " & Output & ".")
            ElseIf (Value <> 83) Or (Value <> 115) Or (Value <> 67) Or (Value <> 99) Then
                Console.WriteLine("You have inputted an incorrect value.")

            End If


            Catch ex As Exception
                'VB.NET will capture the error text in a property called ex.Message. 
                'Let's show this message to the user as follows:
                Console.WriteLine(" A problem occurred:" + Environment.NewLine + ex.Message)

            Finally
               'Logic will come here eventually after calculation is attempted
                Console.WriteLine("I am done with calculations")

            End Try


            Console.WriteLine("Press enter to exit")
            Console.ReadLine()

Попробуйте приведенный выше код, когда х ABC. Лучше всего делать это во время отладки, чтобы вы могли видеть ход программы. Вы не должны иметь 1 большую попытку / поймать в вашей программе. Вместо этого вы обычно размещаете несколько таких блоков только там, где ожидаете проблем и где ваш код может предотвратить повреждение или предоставить полезную обратную связь для пользователя.

Вот еще один пример на эту тему. MSDN-TryCatch1 MSDN-TryCatch2

Обратите внимание, что вы должны обработать случай, когда пользователь может ввести отрицательное значение для X. Это не требует try / catch, а скорее "if".

Другие вопросы по тегам