2017-01-20 41 views
0

我想幫助this guy他的代碼中有一個catch(Exception)子句。糟糕的做法。應該抓住特定的例外。好的,那他們是什麼?如何處理DataSet.Fill中的錯誤?

我查閱了他正在調用的唯一方法的文檔OdbcAdapter.Fill(DataSet),並找到了輸入/輸出列表,通常列出所有可能的異常。沒有列出。它有沒有扔任何?

後來我發現this documentation,這表明Fill不會引發異常,它吞下他們,而是提出了events

但後來我發現this

this

OdbcDataAdapter.Fill(DataSet)是否會拋出異常?什麼例外?它是否會引發事件?

回答

0

它可能會幫助你。

以下代碼示例爲DataAdapter的FillError事件添加事件處理程序。在FillError事件代碼中,該示例確定是否存在精度損失的可能性,從而提供對異常做出響應的機會。

adapter.FillError += new FillErrorEventHandler(FillError); 
DataSet dataSet = new DataSet(); 
adapter.Fill(dataSet, "ThisTable"); 
protected static void FillError(object sender, FillErrorEventArgs args) 
{ 
    if (args.Errors.GetType() == typeof(System.OverflowException)) 
      { 
       // Code to handle precision loss. 
       //Add a row to table using the values from the first two    
       columns. 
       DataRow myRow = args.DataTable.Rows.Add(new object[] 
       {args.Values[0], args.Values[1], DBNull.Value}); 
       //Set the RowError containing the value for the third column. 
       args.RowError = 
       "OverflowException Encountered. Value from data source: " + 
       args.Values[2]; 
       args.Continue = true; 
      } 
    } 

參考:https://msdn.microsoft.com/en-us/library/6d1wk41s(v=vs.110).aspx