如何处理 DataSet.Fill 的错误?

Posted

技术标签:

【中文标题】如何处理 DataSet.Fill 的错误?【英文标题】:How do I handle errors with DataSet.Fill? 【发布时间】:2017-01-20 08:00:28 【问题描述】:

我想帮助this guy,他的代码中有catch(Exception) 子句。不好的做法。应该捕获特定的异常。好的,那它们是什么?

我查阅了他调用的唯一方法OdbcAdapter.Fill(DataSet) 的文档,并找到了输入/输出列表,该列表通常列出了所有可能的异常。没有列出。它会抛出任何东西吗?

然后我找到了this documentation,这表明Fill 不会抛出异常,它会吞下它们,而是引发events。

但后来我找到了this。

还有this。

OdbcDataAdapter.Fill(DataSet) 是否抛出异常?有什么例外?它会引发事件吗?

【问题讨论】:

【参考方案1】:

它可能对你有帮助。

以下代码示例为 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

【讨论】:

以上是关于如何处理 DataSet.Fill 的错误?的主要内容,如果未能解决你的问题,请参考以下文章

“不知道如何处理' nvcc 致命错误

Codeigniter:如何处理数据库错误?

处理 Mongoose 验证错误——在哪里以及如何处理?

如何处理错误的数据类型输入

ConnectionError:如何处理这个错误?

Codeigniter:当我插入数据时出现重复键错误,我该如何处理这个错误?