การสร้างและโยนข้อยกเว้นใหม่


130

ฉันจะสร้างและโยนข้อยกเว้นใหม่ใน PowerShell ได้อย่างไร

ฉันต้องการทำสิ่งต่างๆสำหรับข้อผิดพลาดที่เฉพาะเจาะจง


2
คุณต้องการโยนข้อยกเว้นที่กำหนดเองหรือไม่? [this] [1] ช่วยได้ไหม [1]: stackoverflow.com/questions/11703180/…
bala_88

1
ดูที่โพสต์นี้: stackoverflow.com/questions/2182666/…
Andrey Marchuk

คำตอบ:


194

หากต้องการเรียกข้อยกเว้นเฉพาะเช่น FileNotFoundException ให้ใช้รูปแบบนี้

if (-not (Test-Path $file)) 
{
    throw [System.IO.FileNotFoundException] "$file not found."
}

ในการโยนข้อยกเว้นทั่วไปให้ใช้คำสั่ง throw ตามด้วยสตริง

throw "Error trying to do a task"

เมื่อใช้ภายในการดักจับคุณสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ทำให้เกิดข้อผิดพลาด


ใน C ++ ไม่แนะนำให้โยนสตริงเนื่องจากไม่ได้อยู่ในลำดับชั้นของข้อยกเว้น มันใช้งานได้เหมือนใน Powershell แต่บางทีมันอาจไม่ใช่วิธีที่ดีที่สุด?
Raúl Salinas-Monteagudo

3
หากคุณกำลังใช้ try..catches ในสคริปต์ของคุณและคุณมีคำสั่ง catch หลายคำที่เรียกข้อยกเว้นที่เฉพาะเจาะจงแน่นอนคุณต้องระบุประเภทข้อยกเว้น ฉันไม่แน่ใจว่าเหตุใดจึงมีการอ้างอิงถึง C ++ ในการเขียนสคริปต์ Powershell คำสั่ง throw มักมีจุดมุ่งหมายเพื่อออกจากสคริปต์ด้วยข้อความอธิบาย ฉันไม่ต้องการจุดประกายการถกเถียง แต่ Powershell และ C ++ เป็นสัตว์ที่แตกต่างกันมาก การใช้แนวทางปฏิบัติที่ดีที่สุดของ C ++ หรือ C # กับ Powershell ควรได้รับการแก้ไขเนื่องจากการเขียนสคริปต์มีความเกี่ยวข้องอย่างใกล้ชิดกับการเขียนโปรแกรมเชิงฟังก์ชันมากขึ้น
WiiBopp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.