Question

I have code that looks like:

  //System.Data.IDataRecord dr
  try
  {
       Consolidated = Utility.NullConvert.ToBool(dr[Constants.Data.Columns.cConsolidated], false);
  }
  catch (IndexOutOfRangeException) { } //swallow

I don't know if the consolidated column will be present in the datareader, so I do that to check. It works fine (is a little hackish, though).

When I attach a debugger though, it breaks on that whenever it throws the exception however. Extremely annoying.

Is there a better way to write that code; or is there some Visual Studio way of telling it to ignore the exception and not break (but only right here; not everywhere).

Was it helpful?

Solution

Yes, you can use the GetSchemaTable() method of the datareader to get a list of columns, then you can see if that column exists.

You might find this very similar question helpful.

OTHER TIPS

I would simply use GetOrdinal() at the start of the loop to find the column indexes first (and store in a variable). Then just check whether it is >=0. This has the advantage of improving performance too (as long as you then use this integer for all access, not the name).

And no, there is no elegant way of ignoring a particular exception. You could catch and swallow, but that is not a good approach.

You can simply use the following code:

reader.GetSchemaTable().Columns.Contains("Your_Column")

This will return a boolean.

If reader.GetSchemaTable().Columns.Contains("ContactID") Then
   ' Do something
End If
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top