c# - 位置0处无行错误处理

标签 c# asp.net arrays error-handling

我有以下代码:

try
{
    connection.Open();     

    da.Fill(ds);
    DataRow item = ds.Tables[0].Rows[0];
    byte[] item1 = (byte[])item["FileImage"];
    ds.Tables.Clear();
    numArray = item1;   
}
catch (Exception ex)
{
    throw ex;
}
finally
{
    connection.Close();
}
return numArray;
}

我的代码通过将GridView中的ID传递到SQL语句中来工作,以便找到与存储在表上的ID相关的对应FileImage。我最近注意到,如果手动输入错误的ID,站点将崩溃,并引发异常“位置0处无行”,我发现这基本上意味着没有数据可提取(显然是因为我输入了伪造的ID)。

我的问题是如何处理此错误?我以前从未真正考虑过错误处理,但是我想从我读到的内容来看,我会做一些诸如if语句的事情?基本上,如果没有异常,则继续进行,但是,如果有异常,则可以将页面上TextBox的文本更改为错误消息,告诉用户“警告!该ID无效”?

谢谢你的帮助!

最佳答案

您需要先验证是否有数据,然后再检索它。

更换:

DataRow item = ds.Tables[0].Rows[0];
byte[] item1 = (byte[])row["FileImage"];


byte[] item1 = null;
if (ds.Tables.Count > 0)
{
   var table = ds.Tables[0];
   if (table.Rows.Count > 0)
   { 
      var row = table.Rows[0];
      if (row.Columns.Contains("FileImage")) 
      {
         item1 = (byte[])row["FileImage"];
      }
   }
}
if (item1 == null) 
{
    //handle error
}

关于c# - 位置0处无行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710458/

相关文章:

c - 阵列不连续性

c# - 在单个 LINQ 查询中获取最大值和最小值

c# - 如何使用 AngleSharp 从已解析的 html 元素中获取 css 属性

c# - 在 asp.net 中缓存(输出)?

c# - 我应该如何为应用程序实现 OAuth?

php - 如果使用数组,则获取下拉列表中选定的月份值

c# - 在 HierarchicalDataTemplate 中过滤

c# - 在c#中获取进程的打开线程数

c# - 如何使用Autofac在非引用项目中注册组件

ios - 为什么我不能创建 NSLayoutConstraint 类型的数组?