【发布时间】:2013-10-10 19:45:54
【问题描述】:
Dim mynumber as Integer 'This is the variable as an integer, (Integers only allow WHOLE numbers)
Console.WriteLine("Enter your number..") 'Ask to enter number
Try
mynumber = Console.ReadLine 'Read user input and store it
Catch
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("Only whole numbers allowed! Press enter to start again!")
Console.ResetColor()
Console.ReadLine()
Console.Clear()
GoTo start
End Try
好的,大家可以从上面的示例中看到,我设置了一个 Try/Catch 用于错误处理。我遇到了一个问题。是的 Try/Catch 代码阻止输入字母(字符串),但是当我输入十进制数字时,它仍然接受它。为什么?如何防止这种情况发生?十进制数不应该被接受,因为整数只接受整数!
谢谢。
【问题讨论】:
-
我认为上述案例是异常处理的一个不好的例子。
Try/Catch块应该用于捕获 unexpected 错误。很明显,用户可以输入无效数据,所以这应该在IF...THEN块中处理。还要确保在捕获异常时使用最具体的类型。Catch ex As Exception只会吃掉它遇到的任何错误。Catch ex As InvalidCastException会更好,它表明你知道预计会发生哪种错误。 -
@Neolisk,啊……这真的很复杂!