指数数组的边界之外。捕获错误

时间:2014-11-21 19:43:36

标签: c# asp.net

所以我的代码工作得很好,一切都很好。但是当没有任何内容放入textbox1和textbox2并且我点击提交按钮时,我收到错误索引超出了数组的范围。发现错误。

但是我尝试输入一个else来捕获错误并将标签更改为“无法查找”,而不是服务器错误但它不起作用,为什么会这样?

这是我的代码:

protected void Button1_Click(object sender, EventArgs e)
{

    string CustomerID = TextBox2.Text;
    // 1off


    WebReference.WebServiceTyped ws = new WebReference.WebServiceTyped();
    WebReference.CheckPartStatus PQ = new WebReference.CheckPartStatus();
    string Parts = "";
    string PartNumber = Parts;
    string PriceSum = null;
    long QtySum = 0;

    PartNumber = TextBox1.Text;

    if (PartNumber == TextBox1.Text)
    {

        PQ = ws.CheckPartNumberStatus(PartNumber, CustomerID, "1,6,8,9,112", "", "", "");

        PriceSum = String.Format(PQ.Parts[0].Cost.ToString(), "####.00");

        Label1.Text = PriceSum;
    }
    else
    {
        Label1.Text = "Cannot Find";
    }
}

}

2 个答案:

答案 0 :(得分:0)

你有这一行:

PartNumber = TextBox1.Text;

紧接着就是:

if (PartNumber == TextBox1.Text)

只要您将该值设置为PartNumber,这将永远是真的。因此,您永远不会输入else声明。

在使用之前,您应该检查PQ是否包含任何内容:

if (PQ.Parts.Length>0)
{
    PriceSum = String.Format(PQ.Parts[0].Cost.ToString(), "####.00");
    Label1.Text = PriceSum;
}
else
{
  Label1.Text = "Cannot Find";
}

这会遇到很多问题:客户ID不好或部件号错误

答案 1 :(得分:0)

也许当CustomerId中没有声明Text时,CheckPartNumberStatus失败,尝试捕获空输入:

string CustomerID = TextBox2.Text;
if(CustomerId == string.Empty){
  //error display
  return;
}