Bummer! You have been redirected as the page you requested could not be found.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed C# Objects!
You have completed C# Objects!
Preview
Null represents the absence of a value or object.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Let's go back to main to test
out the GetLocationAt method.
0:00
Let's create a new path object here,
0:05
say Path path = new Path.
0:10
We can actually have the array created and
0:14
pass it into the constructor
in a single statement.
0:16
Like this, so we'll copy this.
0:19
Move it into here.
0:24
Then we can say new array and
0:28
then, indent this like that.
0:33
Now the array is being created and
0:40
immediately being passed into
the constructor of the path class.
0:41
See how that works?
0:46
Now, we can use our new
GetLocationAt method
0:48
to find the location
of a step on the path.
0:51
So, we'll call GetLocationAt and assign it
to a MapLocation variable called location.
0:55
Now let's print out the x and y values of
this step that we know is on the path.
1:07
So we'll say,
1:12
Console.WriteLine(location.X + ","
1:15
+ location.Y).
1:24
Let's compile and
run this and see what we get.
1:28
All right, we get the first
location in the path array.
1:43
Now, let's see what happens when we
pass in a step that isn't on the path.
1:47
The path only has indexes 0 through 7.
1:51
So if we put 8 here, this should be
one step past the end of the path.
1:55
Let's compile and run again.
2:01
We see unhandled exception
printed to the console.
2:04
That doesn't tell us much.
2:09
Let's get some more information
about what happened.
2:11
We're catching every exception
that could possibly be thrown.
2:14
We catch it in one of
these three catch clauses.
2:18
We saw unhandled exception
printed to the console.
2:21
So it looks like the one that
caught the exception is this final
2:25
catch all we have here.
2:28
Let's have this print out some
more detailed information
2:31
about the exception it caught.
2:34
First, we'll need to add
an exception variable here.
2:36
Now we can just append this
variable to the end of our message.
2:39
Remember, the string concatenation
operator here attempts to convert anything
2:43
that isn't a string to a string
before the concatenation.
2:48
It just so happens that the string
that exceptions are converted into
2:52
have a lot of good information in them.
2:56
We'll learn exactly how this
works in a later course.
2:59
Now let's run our code
again to see what we get.
3:02
This is what we get when the exception
is converted to a string.
3:08
As you can see, the name of the exception
thrown is System.NullReferenceException.
3:11
This exception happens when we try
to use null like a normal object.
3:17
Look up here.
3:22
GetLocationAt is supposed to
return null if we ask for
3:23
a step that isn't on the path.
3:27
That means that the location
variable here is now null.
3:29
Now when we tried to get the X
field from the location object,
3:35
it can't do what we asked,
because it isn't the location.
3:38
This is null, and
null is the absence of a location.
3:42
This causes the null reference
exception to be thrown.
3:47
This is a very common
exception to deal with.
3:51
So, what should we do
to make this code work?
3:54
One thing we could do is check
to see if location is null,
3:57
before we try to print out x and
y like this.
4:01
So we can say, if(location
4:04
!= null then print this to the console.
4:10
So if location is null,
nothing will get printed and
4:15
we won't be trying to access location.X or
location.Y.
4:20
This is a very common pattern
when dealing with null.
4:26
It's often called a null check.
4:29
There are some interesting links in the
teacher's notes if you want to dive deeper
4:32
into how to handle null values.
4:36
We'll learn other ways to deal
with null in future courses,
4:39
including how to avoid null entirely.
4:42
A good practice when working with objects
is to always consider what would happen
4:45
if an object is null, and
take the proper precautions.
4:49
We've also just learned about arrays.
4:53
Arrays are pretty handy, are they not?
4:55
I mentioned before that arrays
are just one of the many ways
4:57
to store a collection of objects.
5:01
We'll learn about those in other courses.
5:03
So in the future,
5:05
we might want to change our path class
to use one of those instead of an array.
5:07
We were smart and used encapsulation to
hide the fact that we're using an array.
5:12
We could change it from an array
to any other type of collection.
5:17
And it won't break any code that's using
the public parts of the path class,
5:20
because those parts won't change.
5:24
Next we'll learn about properties.
5:26
They're an important part of C#
that helps with encapsulation.
5:28
I can't wait.
5:32
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up