如何处理用户代码未处理的索引超出范围异常?

问题描述

| 我的工作计划有问题。一切都成功构建,但是当我调试时,在totalUnits = Convert.ToDouble(values [1] .ToString());处出现索引超出范围异常。该程序应该计算公式并将该值返回到文本框。我很困惑。有人可以帮帮我吗?谢谢。 贾斯汀 这是我要看的一些代码:
private double GetRefurbRate()
    {
        string sql = \"\";

        double Refurb_Rate = 0;

        double totalRefurb = 0;

       double totalUnits = 0;

       string error_msg = \"\";


        //Getting the value for sql for totalRefurb
        sql = \"SELECT COUNT(distinct rp.repair_ord) \" +
           \"FROM \" + schema + \".repair_part rp \" +
           \"WHERE rp.repair_type = \'REFURB\' and rp.created_date > \'\" + DateTime.Now.ToString(\"d-MMM-yyyy\") + \"\' \";


        while (true)
        {
            if (!myDb.RunSql(sql,true))
            {
                error_msg = \"DBError for getting Refurb Rate\";
                break;
            }
            if (myDb.dbRdr.HasRows)
            {
                if (myDb.dbRdr.Read())
                {


                    object[] values = new object[myDb.dbRdr.FieldCount];
                    myDb.dbRdr.GetValues(values);
                    Console.WriteLine(values[0].ToString());
                    totalRefurb = Convert.ToDouble(values[0].ToString());



                    //Getting the value from sql for totalUnits
                    sql = \"SELECT count(distinct rp.repair_ord) \" +
                        \"FROM \" + schema + \".repair_part rp \" +
                        \"WHERE rp.repair_type = \'REFURB\' and rp.ref_desig is null  and rp.created_date > \'\" + DateTime.Now.ToString(\"d-MMM-yyyy\") + \"\' \";



                    while (true)
                    {
                        if (!myDb.RunSql(sql,true))
                        {
                            error_msg = \"DBError for getting Refurb Rate\";
                            break;
                        }
                        if (myDb.dbRdr.HasRows)
                        {
                            if (myDb.dbRdr.Read())
                            {


                                values = new object[myDb.dbRdr.FieldCount];
                                myDb.dbRdr.GetValues(values);
                                Console.WriteLine(values[1].ToString());
                                totalUnits = Convert.ToDouble(values[1].ToString());

                                try
                                {

                                    //Formula for Refurb Rate
                                    Refurb_Rate = totalRefurb / totalUnits * 100;
                                    break;

                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e);
                                }

                                myDb.dbRdr.Close();

                                if (error_msg != String.Empty)
                                {
                                    MessageBox.Show(error_msg,\"Get Refurb Rate\",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
                                }

                                break;
                            }
                        }
                    }
                } 
            }
        }
        return Refurb_Rate;

    }
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)