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
    
      
  Learn the ins and outs of catching exceptions and what all this has to do with inheritance.
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
                      Now that we have multiple
types of exceptions
                      0:00
                    
                    
                      let's look at how to handle
them using try catch.
                      0:03
                    
                    
                      We already have a try catch
block in the main method
                      0:07
                    
                    
                      that's catching system.exception.
                      0:10
                    
                    
                      As this code is written right now
this catch block will handle any and
                      0:12
                    
                    
                      all exceptions that are thrown from
the code inside the try block.
                      0:17
                    
                    
                      If a TreehouseDefense exception gets
thrown, this block will handle it.
                      0:21
                    
                    
                      Even the out of bounds exception
will get caught and handled here.
                      0:26
                    
                    
                      In fact,
if any other exception type is thrown,
                      0:30
                    
                    
                      it will still be caught
by this catch block.
                      0:33
                    
                    
                      We're not yet handling different
types of exceptions differently.
                      0:36
                    
                    
                      This catch clause is meant
to catch system.exception.
                      0:40
                    
                    
                      So you might be wondering why it will
catch all of those other exceptions.
                      0:44
                    
                    
                      It's because all exception types are
subclasses of the base system.exception.
                      0:49
                    
                    
                      So they're all of type system.exception
and this catch clause will catch them all.
                      0:54
                    
                    
                      Typically we don't want to handle
all exceptions the same way.
                      1:00
                    
                    
                      In order to handle different
exceptions differently
                      1:04
                    
                    
                      we just need to add more catch clauses.
                      1:07
                    
                    
                      Catch clauses for
the more specific exception types
                      1:10
                    
                    
                      need to be placed before
the more general exception types.
                      1:13
                    
                    
                      We'll create a catch clause for
our OutOfBoundsException here.
                      1:17
                    
                    
                      Let's also add one here for
TreehouseDefenseException.
                      1:28
                    
                    
                      So now we can catch all
three types of exceptions.
                      1:41
                    
                    
                      The order is important,
you can't list more general exceptions
                      1:45
                    
                    
                      before more specific exceptions or
else you'll get a compiler error.
                      1:49
                    
                    
                      This is much better than just catching
system.exception because now we can print
                      1:53
                    
                    
                      something different to the console for
each of these exception cases.
                      1:58
                    
                    
                      For the out of bounds exception,
let's print what we did here.
                      2:02
                    
                    
                      You might be wondering why we're even
catching these other two exceptions here.
                      2:08
                    
                    
                      After all, the only exception we're
throwing is the OutOfBoundsException.
                      2:13
                    
                    
                      We have these other two catch clauses
here to future proof our code.
                      2:18
                    
                    
                      Meaning, it's possible that at some
point in the future, someone might
                      2:22
                    
                    
                      change the code to throw something
other than the OutOfBoundsException.
                      2:27
                    
                    
                      By adding these catch clauses here
to catch all possible exceptions,
                      2:31
                    
                    
                      we can display our own message to
the screen instead of the big scary
                      2:35
                    
                    
                      one that gets displayed by default.
                      2:39
                    
                    
                      For now, let's just print
Unhandled TreeouseDefenseException here.
                      2:41
                    
                    
                      And Unhandled Exception here.
                      2:57
                    
                    
                      We should remove the ex variable from
these clauses since we aren't using it.
                      3:07
                    
                    
                      Otherwise, we'll get a variable not
used warning when we go to compile.
                      3:12
                    
                    
                      Typically we don't want to catch
such general exception types.
                      3:16
                    
                    
                      Usually, the only place that catching
very general exception types makes sense,
                      3:21
                    
                    
                      is in the main method.
                      3:25
                    
                    
                      Because main is the last method in
the program that can handle them.
                      3:27
                    
                    
                      This is used as a last resort to do
something before the program crashes.
                      3:30
                    
                    
                      There are lots of tips and tricks, and
                      3:35
                    
                    
                      many best practices to learn,
on how to do good exception handling.
                      3:37
                    
                    
                      Check out the teachers notes for
more resources if you're interested.
                      3:41
                    
                    
                      It can sometimes be difficult to
decide when to use exceptions and
                      3:46
                    
                    
                      how to handle them.
                      3:50
                    
                    
                      This was just an introduction,
there's a bit more to C# support for
                      3:51
                    
                    
                      exceptions than what we've discussed so
far.
                      3:55
                    
                    
                      We'll talk a lot more about exceptions and
                      3:58
                    
                    
                      other error handling mechanisms
in other courses though.
                      4:00
                    
                    
                      The purpose of this course is to show how
C# supports object oriented programming.
                      4:04
                    
                    
                      And exceptions are an excellent
example of how inheritance and
                      4:09
                    
                    
                      subclassing are used in OO.
                      4:13
                    
                    
                      By using this principle of
object oriented programming
                      4:16
                    
                    
                      we've created two different
class hierarchies.
                      4:19
                    
                    
                      One with point and map location,
and another with system.exception,
                      4:22
                    
                    
                      TreehouseDefenseException, and
OutOfBoundsException.
                      4:26
                    
                    
                      We've seen how subclassing and
inheritance can be used to reuse and
                      4:31
                    
                    
                      extend existing classes,
without altering the original class.
                      4:35
                    
                    
                      We've also seen many examples of
the is a relationship between classes.
                      4:40
                    
                    
                      A map location is a point,
                      4:45
                    
                    
                      the OutOfBoundsException is
a TreehouseDefenseException, and so on.
                      4:47
                    
                    
                      Next we'll learn about another core
principle of object oriented programming
                      4:53
                    
                    
                      called encapsulation.
                      4:57
                    
                    
                      We'll need it to finish building
the Treehouse Defense game.
                      4:59
                    
              
        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