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