Python 3, an Illustrated Tour Transcripts
Chapter: Language syntax
Lecture: Walk-through: Exceptions
Login or
purchase this course
to watch this video and the rest of the course contents.
0:01
In this video, we're going to look at exception test, open that up in an editor. Let's read about the problem, the first part says
0:08
define a customized exception color error that subclasses runtime error. This is pretty straightforward, we just make a new class
0:17
called color error and we're going to subclass runtime error. We don't have to do anything else, we can just pass for the body of that.
0:24
The reason why one might want to define their own class of exceptions is so that they can handle those in a special way in their application
0:32
and it makes looking for them and their application a lot easier.
0:36
The next part says create a function err_wrap that takes a function fn *args and **kwargs.
0:43
It should call and return the result of invoking the function with the arguments and the keyword arguments
0:48
if an exception is raised it will use the raise from exception chaining to wrap the error with a color error.
0:55
Okay, so this is taking advantage of higher order functions in Python and we can pass functions in as parameters to other functions
1:02
we're going to say def err_wrap and it's going to take a function. It's going to take variable positional arguments,
1:08
so *args and **kwargs and we're going to return the result of calling function *args with **kwargs here, but we don't just want to return this
1:19
we want to wrap it and make sure that if there is an exception in here that we catch that exception, so I'm just going to say try except exception as e
1:28
and then if I actually got an exception in here rather than raising that exception I'm going to wrap it. So I'm going to say raise color error from e,
1:38
what that will do is it will wrap color error from e and there will be a context in there that will point to the original exception
1:46
so we can run this and see if it works. It looks like it works, let's take a brief moment to look at the code and see what it is actually testing.
1:59
Here we're calling err wrap with the lambda that simply adds to numbers and it asserts that that result works.
2:06
Here we're calling err wrap with a lambda that divides twonumbers and it's doing division by 0 and it's asserting the it raises a color error
2:14
and then later on the context, the context manager object here has a value attribute which is the actual error
2:22
and on that there is a context which is zero division error. So the real error was the zero division error, but it got wrapped with color error.
2:31
Same thing down here below. We're making a function called raise 2 that just raises a key error,
2:36
and we're calling raise 2 and we're asserting that color error is raised but inside the wrapped context is key error,
2:45
so hopefully this gives you some insight into how to do wrapping in Python 3. This will help finding errors a little bit easier
2:55
and you can make them specific to your code if you'd like to.