trap statement
בפוסט הקודם שכתבתי על תפיסת שגיאות ב Windows PowerShell, דיברתי על כך שניתן באמצעות האובייקט ERROR לדעת איזה שגיאות קרו, לקבל את אוסף כל שהגיאות ולפעול בהתאם.
בתגובה, היו ששאלו אותי איך ניתן לעבוד ולנהל שגיאות בצתורה דומה לדוט.נט שם אנחנו עובדים אם try...catch statement.
התשובה, היא trap statement:
למעשה, trap הוא החלופה של catch. אין לנו ממש משפט try מובהק ב powershell, מאחר שמדובר בסקריפטינג.
לכן, נהוג לשים את ה trap תחילת הפונקציה. ב ExceptionType, מציינים את סוג ה Exception כשאפשר, כמובן, מספר משפטי trap, כל אחד לסוג אחר.
אם נשתמש בתוך ה trap ב ._$ זה יפנה אותנו, למעשה, לאובייקט ErrorRecord שכולל את פירוט השגיאה.
בתוך ה trap, ניתן להשתמש בביטוי continue שאומר שההרצה תחזור לשורת הקוד שלאחר השורה שזרקה את ה exception. אם נשתמש ב break, זה יפסיק את הרצת הסקריפט. ניתן גם להשתמש ב return שמחזיר ערך מחוץ ל scope של ה trap.
השיטה הזאת, בהרבה מובנים נוחה יותר מעובדה ישירה כל שורה מול אובייקט ה error, כדי לבדוק אם אירעה שגיאה. פה, אנחנו נוכל לוודא שנדע על זה בנוחות, כולל מיון לסוג ה Exception.
בהצלחה.