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 ยังคงเรียบง่ายแต่มีพลัง ใหญ่ชนิดเนื่องจากลักษณะที่ไม่บล็อคการทำงานและเน้นไวยากรณ์ที่ชัดเจน ตามที่แสดงในตัวอย่าง รหัสข้อผิดพลาดผสมผสานได้ดีกับฟังก์ชัน ช่วยให้การจัดการข้อผิดพลาดเป็นแบบโมดูลาร์และอ่านง่าย

ดูเพิ่มเติม