Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在vb中捕获帮助时出错_Vb.net_Error Handling - Fatal编程技术网

Vb.net 在vb中捕获帮助时出错

Vb.net 在vb中捕获帮助时出错,vb.net,error-handling,Vb.net,Error Handling,由于错误捕获方面的问题,我一直在尝试解决这个问题,但不确定为什么它不起作用 更新:我没有说太多细节,对此表示抱歉 在第六行,用户打算输入一个数字,但如果用户输入一个字母,程序就会崩溃。我通常使用double.tryparse,这非常有效,但由于某种原因,获取“错误1重载解析失败,因为没有可访问的“tryparse”接受此数量的参数”错误消息 Private Sub quadraticEquation() Dim a, b, c, d As Double Dim x1, x2,

由于错误捕获方面的问题,我一直在尝试解决这个问题,但不确定为什么它不起作用

更新:我没有说太多细节,对此表示抱歉

在第六行,用户打算输入一个数字,但如果用户输入一个字母,程序就会崩溃。我通常使用double.tryparse,这非常有效,但由于某种原因,获取“错误1重载解析失败,因为没有可访问的“tryparse”接受此数量的参数”错误消息

   Private Sub quadraticEquation()
   Dim a, b, c, d As Double
    Dim x1, x2, stra, strb, strc As String
    Console.WriteLine("ax^2 + bx + c = 0")
    Console.WriteLine("Please enter a")
    stra = Console.ReadLine()
    a = Double.Parse(stra)
    If IsNumeric(stra) Then
        Console.WriteLine("Please enter b")
        strb = Console.ReadLine()
        b = Double.Parse(strb)
    Else
        Console.WriteLine("Invalid input")
        Call quadraticEquation()
    End If

    Console.WriteLine("Please enter c")

首先,您必须检查stra是否为数值,并且只有当其数值将其解析为double类型时,您才尝试将非数值值解析为double,这是不可能的,这就是引发异常的原因

   If IsNumeric(stra) Then
            a = Double.Parse(stra)
            Console.WriteLine("Please enter b")
            strb = Console.ReadLine()
            b = Double.Parse(strb)
        Else
            Console.Write("Invalid input")
        End If

错误是什么,在哪一行???您应该改用
Double.TryParse()
。如果可以将值解析为double,则返回True。如果在捕获错误时遇到问题,请在代码中添加一些错误处理和调试。对于此处的问题,您需要尝试提供尽可能多的信息以缩小问题范围。在您的代码中:在执行Double.Parse(stra)之后,没有测试IsNumeric(stra)的意义——解析应该在if中。如果有一个不好的输入,你不想再次调用二次方程子,那真的很复杂。最好将漏洞放在某种
中,而
重复
循环。很抱歉,我现在更新了我的帖子,我将对代码进行一些更改,看看会发生什么。如果您忘记在帖子中更新代码,则错误消息还不够。TryParse可以这样使用:
如果Double.TryParse(stra,Nothing)=True,那么
如果解析成功,则返回True。