最近做毕业设计,用动软代码生成器生成DbHelperSQL.cs文件,生成网站是成功,但是在修改的时候就出现  用户代码未处理Exception  显示throw new Exception(ex.Message);第一行:throw new Exception(ex.Message);
代码如下:
 /// <summary>
        /// 执行查询语句,返回DataSet
        /// </summary>
        /// <param name="SQLString">查询语句</param>
        /// <returns>DataSet</returns>
        public static DataSet Query(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    connection.Open();
                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                    command.Fill(ds, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    throw new Exception(ex.Message);   //此句错误                }
                return ds;
            }
        }
        public static DataSet Query(string SQLString, int Times)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    connection.Open();
                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                    command.SelectCommand.CommandTimeout = Times;
                    command.Fill(ds, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
                return ds;
            }
        }

解决方案 »

  1.   

    catch (System.Data.SqlClient.SqlException ex)
    {
      throw new Exception(ex.Message); //此句错误 
    }你这里已经捕获到SqlException了,所以这个时候你需要做处理,比如提示信息等,而不能将异常再往外抛,因为找不到处理该异常的对象了。
    打个比方,在学校里,你是班长,老师安排给你个任务,让你找个同学做一件事情,你找到一个同学,然后告诉他怎么怎么做,这个时候那个同学就是你这里捕获到的SqlException异常,这个同学需要处理了,去做这件事情,而不是这个同学再将这个事情再抛出去,因为没有其他同学来接,因为是分配给你的,必须由你来处理。
    ============》修改成catch(Exception ex)
    {
      throw new Exception(ex.Message); 
      //
      MessageBox.Show("出现异常:"+ex.Message);
    }
    即使这样层层将异常抛出,总得有人解决啊.
      

  2.   

    catch里面可以什么也不写,也可以 MessageBox.Show异常信息
      

  3.   

    明显不是CATCH那块错误。已经出异常了,只是被CATCH捕获了
      

  4.   

    1楼误人子弟。
    必须将异常的详细信息写到log里,即用exception.ToString()方法,而不能用Message属性,那样没有错误堆栈信息。
    可以一层层地向外抛异常,一直到ui层才显示给用户一个友好的出错信息,但那也不应该是异常的Message。
    楼主的代码里throw new Exception(ex.Message);丢失了堆栈信息,是错误的做法。