Transcript from the "Error Specificity" Lesson
>> Nina Zakharenko: We want to catch the more specific exception first.
>> Nina Zakharenko: So I'm going to make a little function here, and I'm gonna call it division. And it's gonna take the number to divide, Sam and I just call that num. And I’m gonna say, try: result =, let me make sure my indentation is correct here.
[00:00:33] Okay, result is going to equal to the value of pi divided by the user input number. We're going to except on ArithmeticError and print out that we had a general math error. Otherwise, I'm also going to accept on a special type of exception called the ZeroDivisionError. Why might this come up?
>> Speaker 2: If you divide by zero and the number is zero.
>> Nina Zakharenko: Yes, so if the number is zero. Yeah, and I can say, Divide by zero error.
>> Speaker 3: I think you're gonna have problems because the arithmetic is spelled wrong and you missed the first i, and so-
>> Nina Zakharenko: Thank you.
[00:01:29] Let me just put that back in real quickly. So result = 3.14 / num and except Arithmetic. Got that right. Yeah, Error. Okay, and I'm gonna print out, math error.
>> Nina Zakharenko: And then I'm gonna except on ZeroDivisionError. And I'm going to print, zero division. Okay, if I try to do division by 0, we're gonna see something a little bit unexpected.
[00:02:14] I'm going to get a math error, and that's because the 0 division error is the more specific error, and arithmetic error is the more general one. So by catching the more general exception first, I swallowed the more helpful error message. And to figure out this exception hierarchy, you can look at the Python docs page.
>> Nina Zakharenko: And check it out. There's a lot there, the link is in the course website. In general, it's pretty bad to catch exception in your code, because let's say I was using the GitHub API, and I caught exception when I tried to use it. I just completely lost context of what the general exception was.
[00:03:14] And now I can't really change the flow of my program by what I can do with it. The absolute worst thing that you can do is try some code.
>> Nina Zakharenko: Except on Exception.
>> Nina Zakharenko: And then do nothing.
>> Nina Zakharenko: Everything went fine according to my code, right? So this is called swallowing the exception.
[00:03:48] You should at least try to log it or do something, maybe page your ops guy depending on the severity of the error. But by doing this you'll really lose a lot of context. And again, generally don't catch base exception, or not generally, but definitely don't do that ever, ever.
[00:04:09] That's even the worst form of this.