PowerShell:
การจัดการกับข้อผิดพลาด

วิธีการ:

# วิธีเบื้องต้นในการจัดการข้อยกเว้นด้วย Try-Catch
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 อย่างแน่นอน

ดูเพิ่มเติม