Ignore NullReferenceException when reading object properties

Is there any way to direct C# to ignore NullReferenceException (or any specific exception for that matter) for a set of statements?
This is useful when trying to read properties from a deserialized object that may contain many null objects in it.
Having a helper method to check for null could be one way but I’m looking for something close to ‘On Error Resume Next’ (from VB) at a block of statement level.

Try-Catch will skip the succeeding statements on exception

try
{
   stmt 1;// NullReferenceException here, will jump to catch - skipping stmt2 and stmt 3
   stmt 2;
   stmt 3;
}
catch (NullReferenceException) { }

For Example: I’m deserializing an XML message to an object and then try to access a property like

Message.instance[0].prop1.prop2.ID
now prop2 could be a null object (because it doesn’t exists in XML Message – an optional element in XSD). right now I need to check for null for each element in the hierarchy before accessing the leaf element. i.e I’ve to check if instance[0], prop1, prop2 are not null, before accessing ‘ID’.

any better way that avoids null-checking for each element in the hierarchy?

now I’m using delegate and NullReferenceException handling

public delegate string SD();//declare before class definition

string X = GetValue(() => Message.instance[0].prop1.prop2.ID); //usage

//GetValue defintion
private string GetValue(SD d){
        try
        {
            return d();
        }
        catch (NullReferenceException) {
            return "";
        }

    }

Thanks to http://stackoverflow.com/questions/117173/c-try-catch-every-line-of-code-without-individual-try-catch-blocks for the idea


From my SO Post

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: