מה הגישה הכדאית להתמודד עם חריגות בקלט מהמשתמש?

נניח שאני מגדיר פונקציה שמקבלת שני משתנים. ואני חושש שמשני מקרים - האחד שהמשתמש לא הזין כלל משתנים, והמקרה השני הוא שהוא הזין יותר משני משתנים.
בגדול - כל פסקת try - except שאני אשים בתוך הפוקנציה לא תקלוט את החריגה, כי היא מתרחשת בקריאה עצמה אל הפונקציה. רק אם אני אעטוף את התוכנית הראשית ב try-except.
השאלה האם לא נהוג להתמודד עם כאלה חריגות, בכל כתיבת תוכנית, או שמניחים שהמשתמש יבין מתי הוא מקריס את התוכנית? וגם בשאלות ש"ב האם יש להתמודד עם זה?

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

אם להיות יותר ממוקד - מתי מנסים להתמודד עם שגיאות משתמש ומתי לא? פשוט עלול לא להיות לזה סוף אם מנסים להתמודד עם זה ברמת הפונקציה. העבת כמות לא מספקת זה עוד סביר, מה אם הוא מנסה להעביר משתנה שטרם הוכרז? או משהו שלא קיים כמו int(‘b’)? ועוד ועוד…

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

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

תניח שאם הוא מתכנת הוא אמור לדעת לקרוא שגיאות של פייתון, אבל כן יש אזור דמדומים בין “לא מטפל בשום דבר שקשור לבעיות שעלולות לקרות בעקבות שימוש מתכנת בקוד שלי” לבין “תופס הכל”.
צריך לקבל החלטות נבונות, וזה skill שיבנה ככל שתתכנת יותר :slight_smile: