Fish Shell:
การจัดการกับข้อผิดพลาด
การทำ:
เพื่อจับข้อผิดพลาดใน Fish ให้ใช้คำสั่ง status และเงื่อนไข สมมติ ping ล้มเหลว นี่คือวิธีตรวจจับ:
ping -c 1 example.com
if not status is-success
echo "Something fishy happened with the ping."
endผลลัพธ์ตัวอย่างหาก ping ล้มเหลว:
Something fishy happened with the ping.เพื่อจัดการกับรหัสข้อผิดพลาดเฉพาะ ให้ใช้ status --is:
false
if status --is 1
echo "Caught an error with code 1."
endผลลัพธ์ตัวอย่าง:
Caught an error with code 1.สำหรับการทำงานที่เชื่อถือได้มากว่า พิจารณาใช้ฟังก์ชัน:
function try_ping
ping -c 1 example.com
or begin
echo "Ping failed with status $status"
return 1
end
end
try_pingลงลึก
การจัดการกับข้อผิดพลาดใน Fish ไม่ได้เป็นไปตามแบบฉบับ try/catch ที่คุณอาจคุ้นเคยจากภาษาการโปรแกรมระดับสูง แทนที่จะเป็นแบบนั้น คุณมีสถานะการออกที่ให้ไว้โดยคำสั่ง status เป็นอย่างตรงไปตรงมา
ตามประวัติศาสตร์ ในระบบที่คล้าย Unix สถานะการออก 0 หมายถึงความสำเร็จ ขณะที่ค่าที่ไม่เป็นศูนย์หมายถึงข้อผิดพลาด ซึ่งโดยทั่วไปแล้วสะท้อนถึงเหตุผลในการล้มเหลวที่แตกต่างกัน ข้อตกลงนี้ถูกใช้โดยส่วนใหญ่ของยูทิลิตี้บรรทัดคำสั่งและด้วยเหตุนี้ โดย Fish เองด้วย
ทางเลือกสำหรับการตรวจสอบสถานะใน Fish รวมถึงการจัดการสัญญาณผ่าน trap ในเชลล์อื่น ๆ แต่ Fish ชอบการตรวจสอบสถานะที่ชัดเจนมากขึ้น เนื่องจากมันง่ายและมีแนวโน้มที่จะเกิดผลข้างเคียงน้อยกว่า
ในทางการปฏิบัติ การจัดการกับข้อผิดพลาดใน Fish ยังคงเรียบง่ายแต่มีพลัง ใหญ่ชนิดเนื่องจากลักษณะที่ไม่บล็อคการทำงานและเน้นไวยากรณ์ที่ชัดเจน ตามที่แสดงในตัวอย่าง รหัสข้อผิดพลาดผสมผสานได้ดีกับฟังก์ชัน ช่วยให้การจัดการข้อผิดพลาดเป็นแบบโมดูลาร์และอ่านง่าย
ดูเพิ่มเติม
- เอกสารการใช้งาน Fish เกี่ยวกับเงื่อนไข: https://fishshell.com/docs/current/language.html#conditionals
- คู่มือการใช้งาน Fish ในหัวข้อการจัดการข้อผิดพลาด: https://fishshell.com/docs/current/tutorial.html#error-handling