เพื่อแก้ไขการค้นหาไวยากรณ์ที่ไม่ถูกต้องนี้
- ถ้า Try-Catch ไม่ทำงานบน PowerShell คุณต้องตรวจสอบค่าไวยากรณ์และข้อผิดพลาดที่ไม่ถูกต้อง
- คู่มือนี้จะอธิบายวิธีต่างๆ ในการแก้ไขปัญหา
เอ็กซ์ติดตั้งโดยคลิกที่ไฟล์ดาวน์โหลด
- ดาวน์โหลดเครื่องมือซ่อมแซมพีซี Restoro ที่มาพร้อมกับเทคโนโลยีที่จดสิทธิบัตร (มีสิทธิบัตร ที่นี่).
- คลิก เริ่มสแกน เพื่อค้นหาปัญหาของ Windows ที่อาจทำให้เกิดปัญหากับพีซี
- คลิก ซ่อมทั้งหมด เพื่อแก้ไขปัญหาที่ส่งผลกระทบต่อความปลอดภัยและประสิทธิภาพของคอมพิวเตอร์ของคุณ
- ดาวน์โหลด Restoro แล้วโดย 0 ผู้อ่านในเดือนนี้
คำสั่ง Try-Catch ใน พาวเวอร์เชลล์ จัดการข้อผิดพลาดและข้อยกเว้นในรหัสของคุณ หาก Try-Catch ไม่ทำงานตามที่ยกเว้นใน PowerShell อาจทำให้หงุดหงิดได้
ในคู่มือนี้ เราจะกล่าวถึงวิธีการแก้ไขปัญหาทั้งหมดพร้อมกับสาเหตุที่เป็นไปได้ของปัญหา เริ่มกันเลย!
อะไรเป็นสาเหตุของปัญหา Try-Catch ไม่ทำงานใน PowerShell
อาจมีสาเหตุหลายประการที่ทำให้คำสั่งไม่ทำงานบน PowerShell นี่คือบางส่วนที่พบบ่อยที่สุด:
- ชุด ErrorAction เริ่มต้น - ถ้า ErrorAction ถูกตั้งค่าเป็นดำเนินการต่อจากนั้น Try-Catch จะไม่ทำงานตามที่คาดไว้
- ข้อผิดพลาดทางไวยากรณ์ – หากไวยากรณ์ที่ใช้ไม่ถูกต้อง การจัดรูปแบบไม่ถูกต้อง หรือไม่มีคีย์เวิร์ด Try-Catch จะไม่ทำงาน
- Cmdlet หรือพฤติกรรมของฟังก์ชัน – บางฟังก์ชันและ cmdlet มาพร้อมกับการจัดการข้อผิดพลาด ซึ่งอาจเข้ากันไม่ได้กับ Try-Catch
- ตรรกะหรือการใช้ตัวแปรไม่ถูกต้อง – หากมีการใช้งานที่ไม่เหมาะสม ตัวแปร หรือลอจิกที่ไม่ถูกต้อง การ Try-Catch จะไม่ทำงาน
ฉันจะทำอย่างไรหาก Try-Catch ไม่ทำงานบน PowerShell
1. ตรวจสอบไวยากรณ์
- ก่อนอื่น คุณต้องตรวจสอบว่าคุณใช้ไวยากรณ์ที่ถูกต้องสำหรับเวอร์ชันของ PowerShell ที่คุณกำลังใช้อยู่หรือไม่
- จากนั้น ตรวจสอบว่าคุณได้วางบล็อก Try and Catch ในลำดับที่ถูกต้อง
- ไวยากรณ์พื้นฐานสำหรับ Try-Catch ระบุไว้ด้านล่าง แทนที่ # รหัสที่จะทำงานที่นี่ด้วยรหัสและ # รหัสการจัดการข้อผิดพลาดที่นี่ด้วยรหัสการจัดการข้อผิดพลาด:
พยายาม {
# รหัสที่จะเรียกใช้ที่นี่
}
จับ {
# รหัสการจัดการข้อผิดพลาดที่นี่
}
2. ตรวจสอบว่าคุณกำลังดักจับข้อผิดพลาดเฉพาะหรือไม่
คุณต้องตรวจสอบว่าคุณกำลังดักจับข้อผิดพลาดเฉพาะที่คุณต้องการจัดการหรือไม่ ไม่ใช่ข้อผิดพลาดทั้งหมด ทำตามขั้นตอนเหล่านี้เพื่อทำเช่นเดียวกัน:
- กด
หน้าต่าง
คีย์, พิมพ์ พาวเวอร์เชลล์, แล้วคลิก เรียกใช้ในฐานะผู้ดูแลระบบ. - ในการดักจับข้อผิดพลาด คุณต้องใช้ $ ตัวแปรในบล็อก Catch เพื่อเข้าถึงข้อมูลเกี่ยวกับข้อผิดพลาดที่เกิดขึ้น ลองตรวจสอบตัวอย่างเดียวกันเพื่อทำความเข้าใจให้ดียิ่งขึ้น:
พยายาม {
Get-ChildItem - เส้นทาง C:\DoesNotExist
}
จับ {
ถ้า ($_.Exception. GetType().Name -eq "DirectoryNotFoundException") {
เขียนเอาต์พุต "ไม่พบไดเร็กทอรี"
}
อื่น {
โยน $_.Exception|
}
}
3. ตั้งค่า ErrorAction
ค่าเริ่มต้นสำหรับ ErrorAction คือดำเนินการต่อ อย่างไรก็ตาม เพื่อให้ Try-Catch ทำงาน คุณต้องตั้งค่า ErrorAction เป็น Stop โดยทำตามขั้นตอนเหล่านี้:
- เปิด พาวเวอร์เชลล์ ในฐานะผู้ดูแลระบบ
- คุณต้องใช้ Set-StrictMode cmdlet หรือพารามิเตอร์ ErrorAction ในแต่ละ cmdlet เพื่อให้เข้าใจได้ดีขึ้น เรามาดูตัวอย่าง:
พยายาม {
Get-ChildItem -Path C:\DoesNotExist -ErrorAction Stop
}
จับ {
การเขียนเอาต์พุต $_.Exception ข้อความ
}
- ต่อไปนี้คือวิธีกู้คืนคีย์ BitLocker จาก OneDrive
- วิธีใช้ Phone Link สำหรับ iPhone บน Windows 11
- DaVinci แก้ไขการใช้งาน CPU สูง: วิธีลด
4. ใช้ประเภทข้อยกเว้นที่ถูกต้อง
สิ่งสำคัญคือต้องใช้ข้อยกเว้นที่ถูกต้องเมื่อใช้ Try-Catch เนื่องจากสามารถจัดการกับข้อยกเว้นของระบบเท่านั้น ประเภทข้อยกเว้น หากคุณเคยใช้งานระบบที่ไม่ใช่ เกิดข้อผิดพลาดในการยกเว้น ดังนั้น Try-Catch จะไม่ทำงาน
สำหรับที่ไม่ใช่ระบบ ข้อยกเว้น คุณต้องใช้กลไกการจัดการข้อผิดพลาดของเฟรมเวิร์ก NET หรือตรวจจับข้อผิดพลาด
5. หลีกเลี่ยงการยุติสคริปต์
หากสคริปต์ของคุณถูกยกเลิกก่อนที่จะถึงบล็อก Catch Try-Cach จะไม่มีโอกาสจัดการกับข้อผิดพลาด เพื่อหลีกเลี่ยงการยุติสคริปต์ ให้ทำตามขั้นตอนเหล่านี้:
- ปล่อย พาวเวอร์เชลล์ ด้วยสิทธิ์ของผู้ดูแลระบบ
- คุณต้องใช้ ดำเนินการต่อ แถลงการณ์หลัง จับ ปิดกั้น. มาทำความเข้าใจด้วยตัวอย่าง:
พยายาม {
Get-ChildItem - เส้นทาง C:\DoesNotExist
}
จับ {
การเขียนเอาต์พุต $_.Exception ข้อความ
ดำเนินการต่อ
}
6. ใช้ Try-Catch-ในที่สุด
หากคำสั่ง Try-Catch ยังคงไม่ทำงาน คุณสามารถใช้โครงสร้าง Try-Catch-Finally แทนได้ สิ่งนี้ทำให้มั่นใจได้ว่าโค้ดของคุณจะทำงานจนจบแม้ว่าจะมีข้อยกเว้นก็ตาม
- เปิด พาวเวอร์เชลล์ ในฐานะผู้ดูแลระบบ
- พิมพ์คำสั่งด้วย ลองจับในที่สุด. นี่คือตัวอย่างเพื่อให้เข้าใจสคริปต์ได้ดีขึ้น:
พยายาม {
# รหัสของคุณที่นี่
}
จับ [ระบบ. ข้อยกเว้น] {
# รหัสการจัดการข้อยกเว้นที่นี่
}
ในที่สุด {
# ล้างรหัสที่นี่
}
ดังนั้น นี่คือวิธีที่คุณสามารถแก้ไขปัญหา Try Catch ไม่ทำงานบน PowerShell หากคุณมีคำถามใด ๆ เกี่ยวกับ Try-Catch โปรดระบุในส่วนความคิดเห็นด้านล่าง เรายินดีที่จะช่วยเหลือ!
หากคุณต้องการทราบวิธีหยุด PowerShell ไม่ให้ปิดหลังจากเรียกใช้สคริปต์ คุณสามารถอ่านสิ่งนี้.
ยังคงมีปัญหา? แก้ไขด้วยเครื่องมือนี้:
ผู้สนับสนุน
หากคำแนะนำข้างต้นไม่สามารถแก้ปัญหาของคุณได้ พีซีของคุณอาจประสบปัญหา Windows ที่ลึกกว่านั้น เราแนะนำ ดาวน์โหลดเครื่องมือซ่อมแซมพีซีนี้ (ได้รับการจัดอันดับยอดเยี่ยมบน TrustPilot.com) เพื่อจัดการกับปัญหาเหล่านี้ได้อย่างง่ายดาย หลังการติดตั้ง เพียงคลิกที่ เริ่มสแกน ปุ่มแล้วกดบน ซ่อมทั้งหมด.