שגיאות OSError - מה לעשות כשאין exception ספציפי

תגיות:

בכל מה שנוגע לפתיחת קבצים יש כמה שגיאות שנמצאות תחת OSError שהשתמשתי בהן בחלק גדול מהתרגילים, אבל יש מקרה שלא מצאתי עבורו exception ספציפי: כאשר במשתנה ה-path בפונקציה open מזינים int קופצת השגיאה: OSError: [WinError 6] The handle is invalid.

תחת OS exceptions (Built-in Exceptions — Python 3.10.1 documentation)
אין שגיאה מתאימה אז אני נדרש להשתמש ב-OSError. הבעיה היא שזה “תופס” עוד הרבה שגיאות אחרות (כולל שגיאות שאני רוצה לתפוס בניסיון לפתוח ולקרוא קובץ כמו: FileNotFoundError, IsADirectoryError, PermissionError).

מה נכון לעשות במקרה כזה?
בינתיים כתבתי שורה אחת של except שבה כל השגיאות הספציפיות שאני רוצה לתפוס כמו אלה שציינתי, ואחריה except אחר עם OSError.

2 לייקים

זו שאלה טובה, אז אני שמח שהעלת, אבל חפש בגוגל, יש שם לא מעט תשובות בדיוק על השאלה הזו (:
בגדול צריך לתפוס עם as ואז לגשת לתכונה errno.
יש מספר שגיאה שמאפיין את כל אחת מהשגיאות האפשריות ב¯OSError ואפשר להתנות עליהם.
כאקסטרה, יש מודול בפייתון שממפה את כל השגיאות האלו לקבועים:
https://docs.python.org/3/library/errno.html

לייק 1