 I want to give you a real-world example of where exception handling might be useful. In that case, you're all using the typos system and as you can see, maybe from the pop-up text going there. I still got to figure out the finger thing. We're looking at now how typos is ran. This is, in our case, my exercise.py file. This is literally how I manage a lot of your exercises and store them in the database or build them and delete them and things of that nature. Most of this, yeah, it's a lot of code. I understand. But specifically, I want to come down to just a simple thing. Very simple little toggle visibility. Now, if you take a look at this code right here, this is an exact situation where I would want to know if something is going wrong. If I'm not able to turn off the visibility so you don't see the exercise because some of them are not updated to Python 3 just yet, I don't want you to see that. But if I attempt to do it and it crashes, I'm going to have a problem. In my case, I'm setting up a try. And now, in my case, I'm using a nice little trick of setting a variable to flip by if it was true saying now it's going to be not true. Not true. Evaluates to false. And so it's a nice little trick to flipping the value. But what happens if I get an exception? What happens if there is an error? Now, in my case, I'm catching just every exception as is because it's more of a generic thing. I'm doing a database. In this case, I'm rolling back the database, which means whatever changes you made before you attempted to do this code, reset that. But specifically, these are that erring with grace that I like to think about. I'm going to log what went wrong. This is just a program that is designed to log and copy when that error occurs. In this case, it literally tells me it erred in the models folder with the exercises file with the exercise object and the function was called toggle visibility. And then it tells me what that error is because I need to know that stuff. And then in my case, this is how I'm erring with grace. There are a few other attempts that I also work off of. So just to show another one. This is the one I typically use for here. I'll just use this one as an example. So in this case, you are making a submission. So you are making some submission in typos. I don't know what it is. It's typically a typing exercise, but I also have other exercises that I'm developing. Now, you can see that I start the try statement very early on here. Because again, I need to grab all the data and make sure it all works. I'm loading your whatever you submit and turning it into a dictionary. And I'm doing a few different things going on here. All right, I'm checking to see if you're doing a typing exercise, checking to see if you're doing my find the bugs or fix the bugs. Because each one has a different thing that they need to work off of. But the big thing is during the entire process, what happens if you, for whatever reason, some part of that code crashes. Again, as the developer, I need to know why it crashed. I don't want it to just crash willy-nilly. And so in this case, I'm logging it and then I'm crashing with safety. So it's a way for us to make sure that the program doesn't crash in a way that the user has no idea what's going on. And it allows us to record when things go wrong so that we can do a reverse analysis and understand what's going wrong.