I want to write a check for some conditions without having to use try/catch and I want to avoid the possibilities of getting Index Out of Range errors
if (array.Element[0].Object.Length > 0 || array.Element[1].Object.Length > 0) //making sure there's at least one Object array that has values
{
if (array.Element[0].Object[0].Item.Length != 0 || array.Element[1].Object[0].Item.Length != 0) //this is where I check that at least one of the Items (strings) is not empty
{
// execute code here
}
}
So the problem I am facing is that in the second check I need to see whether I have one Item that is not empty. However, If I don’t have Element[1], I get the Index Out of Range exception. The problem is that there could be 2 Elements and one(or both) of them may have empty Object arrays. The code will have to be executed only if one of thos Item strings is not empty.
Hopefully, I explained it well. How do I go about avoiding getting that exception under any condition?
Alright, you need some better null checking and some more cautious code here.
is just unacceptable.
First, let’s null check
for simplicity, you could use
&&then, inside that if, we use a for loop (since you’re stuck on arrays) and null check it
then, since you have nested arrays, we loop again. This is called a nested loop, and it’s generally bad practice, I’ll show you why it works in a second.
Now, with all of that ugly nested loopyness, we’ve found out that your Item is not null.
On top of that, you have access to ALL of the potential values here, and can group them as you like. Here’s how I would put the whole thing together for simplification.