יצירת חריגה - שאלת הבנה

תגיות:

במחברת 4 בסעיף על יצירת חריגות:

כותבים חריגה שיורשת מ-Exception:

class AddressUnknownError(Exception):
    pass

ובקוד אחר כך “תופסים” שגיאת KeyError ומעלים את החריגה שיצרנו.

לא הבנתי למה זה לא טוב שהחריגה שיצרנו תירש מ-KeyError אם בכל מקרה מעלים אותה אחרי תפיסת שגיאת KeyError.

ניסיתי לשחק עם זה אבל יצא משהו שלא הבנתי. שיניתי את הקוד כך שהחריגה כן תירש מ-KeyError ותדפיס משהו, ואת הקוד שאחרי שיניתי כך שרק תודפס השגיאה שנתפסה. אבל לא הודפס מה שכתבתי.
אשמח להסבר אני קצת מבולבל :sweat_smile:

ביצירת חריגה על כתובת לא ידועה נרצה לתפוס בדיוק את זה, ולא דברים לא קשורים כמו KeyError. ממה שהבנתי (ואני זוכר) מאותו הסבר - נכתב שצריך להזהר כאשר משתמשים בירושה ולשים לב להיות ספציפיים כדי שלא נתפוס גם דברים שאינם קשורים.

כדאי לשים לב לכלל האצבע: A יכול לרשת מ B אם A הוא סוג של B. למשל Dog יכול לרשת מ Animal. כך גם לגבי חריגות.