PowerShell:
טיפול בשגיאות

איך לעשות:

# ניסיון-תפיסה בסיסי לטיפול בחריגות
try {
    # קוד שעלול להפעיל שגיאה
    $result = 1 / 0
} catch {
    # מה לעשות אם אירעה שגיאה
    Write-Host "אופס, אירעה שגיאה: $_"
}

# הצגת הודעת שגיאה מותאמת אישית
try {
    Get-Item "nonexistentfile.txt" -ErrorAction Stop
} catch {
    Write-Host "הקובץ לא נמצא."
}

# שימוש במשתנה $Error לבדיקת השגיאה האחרונה

צלילה עמוקה

-PowerShell התפתח הרבה מאז היווסדו כ-Monad. ניהול שגיאות הופך למתוחכם יותר עם הזמן, והוא מציע תכונות דומות לשפות תכנות אחרות. תחביר try-catch-finally הוא אחת התכונות המשותפות משפות כמו C#. לפניו, תסריטאים הסתמכו במידה רבה על בדיקת תנאים ושימוש במשתנה האוטומטי $Error.

-PowerShell גם יש שני סוגים עיקריים של שגיאות: מסיימות ולא מסיימות. שגיאות מסיימות יעצרו את הסקריפט אלא אם כן הן נתפסו בבלוק try-catch, בעוד שגיאות לא מסיימות לא יעצרו אלא אם כן ציינת -ErrorAction Stop. ההבחנה הזו חשובה משום שהיא מעניקה שליטה דקדקנית על ניהול השגיאות, ומחליטה האם שגיאה באמת מצדיקה השבתת הסקריפט כולו או שניתן פשוט לרשום ולהתעלם.

ניהול שגיאות ב-PowerShell גם מאפשר שימוש בבלוק finally, שירוץ ללא קשר למה שקורה - בין אם אירעה שגיאה או לא. זה מעולה למשימות ניקוי.

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

לחלופין, יש את אפשרות העתיקה -ErrorVariable לזיהוי שגיאות ללא הפעלת חריגה. והמשתנה $? אומר לכם אם הפעולה האחרונה הייתה מוצלחת. הם כלים נוחים, אך קצת פחות נקיים ממבנה try-catch רציני.

ראו גם