我在设计数据访问层时怎么更详细的把一些错误信息返回给用户?请看一下下面的代码:
在数据访问层定义了一个类:
public DataSet GetUserIfo(string duty)
{    string connString="DataSource=(local);Database=ERPDatabase;Uid=sa;Pwd=";
    SqlConnnection myConn=new SqlConnection(connString);
    string sqlString="SELECT * FROM user WHERE Duty='"+duty+"'";
    SqlDataAdapter da=new SqlDataAdapter(sqlString,myConn);
    try
    {
       myConn.Open();
    }
    Catch(SqlException connError)
    {
       在这里我应该返回什么信息来通知应用层的用户发生了数据库连接错误呢?
       return null;
    }
    DataSet ds=new DataSet();
    try
    {
       da.Fill(ds);
       return ds;
    }
    catch
    {
      return null;
    }
    finally
    {
      myConn.Close();
    }}

解决方案 »

  1.   

    但是这个函数的返回值是DataSet类型呀,返回connError.Message可能不行吧
      

  2.   

    public DataSet GetUserIfo(string duty) 
    {     string connString="DataSource=(local);Database=ERPDatabase;Uid=sa;Pwd="; 
        SqlConnnection myConn=new SqlConnection(connString); 
        string sqlString="SELECT * FROM user WHERE Duty= '"+duty+" '"; 
        SqlDataAdapter da=new SqlDataAdapter(sqlString,myConn); 
        DataSet ds=new DataSet();
        try 
        { 
           myConn.Open(); 
        } 
        Catch(SqlException connError) 
        { 
           DataTable dt=new DataTable("one");  //想个办法,然后接收时取ds.Tables["one"].Rows[0][0].ToString()就行了
           dt.Rows[0][0]=connError.Message;
           ds.Tables.Add(dt);
           return ds; 
        } 
        try 
        { 
           da.Fill(ds); 
           return ds; 
        } 
        catch 
        { 
          return null; 
        } 
        finally 
        { 
          myConn.Close(); 
        } }
      

  3.   

    一般没有必要定义/抛出异常类的子类型 因为它本身已经很详细地表明异常信息了
        try 
        { 
           da.Fill(ds); 
           return ds; 
        } 
        catch(Exception ex)
        { 
          return ex; 
        } 
        finally 
        { 
          if(myConn.State==ConnectionState.Open)
          {
             myConn.Close(); 
          }
        } 
    然后再在调用处捕获异常 继续处理
      

  4.   

    http://www.cnblogs.com/eddie005/archive/2006/08/01/WorkingWithData_ASPNET2.html