Нужно выяснить, как использовать 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".