Fish Shell:
Xử lý lỗi
Cách thực hiện:
Để bắt lỗi trong Fish, hãy dựa vào lệnh status
và các điều kiện. Giả sử ping
thất bại; đây là cách để phát hiện điều đó:
ping -c 1 example.com
if not status is-success
echo "Có điều gì đó không ổn với ping."
end
Kết quả mẫu nếu ping
thất bại:
Có điều gì đó không ổn với ping.
Để xử lý một mã lỗi cụ thể, sử dụng status --is
:
false
if status --is 1
echo "Đã bắt được một lỗi với mã 1."
end
Kết quả mẫu:
Đã bắt được một lỗi với mã 1.
Để có cách tiếp cận mạnh mẽ hơn, hãy cân nhắc sử dụng một hàm:
function try_ping
ping -c 1 example.com
or begin
echo "Ping thất bại với trạng thái $status"
return 1
end
end
try_ping
Sâu hơn nữa
Xử lý lỗi trong Fish không giống với mô hình try/catch
mà bạn có thể biết từ các ngôn ngữ cấp cao hơn. Thay vào đó, bạn có các trạng thái thoát ra đơn giản được cung cấp bởi lệnh status
.
Về mặt lịch sử, trong các hệ thống giống Unix, một trạng thái thoát ra là 0
có nghĩa là thành công, trong khi bất kỳ giá trị không phải không nào cũng chỉ ra một lỗi, thường phản ánh các lý do thất bại khác nhau. Quy ước này được sử dụng bởi hầu hết các tiện ích dòng lệnh và do đó, bởi chính Fish.
Các phương án thay thế cho các kiểm tra status
trong Fish bao gồm xử lý tín hiệu thông qua trap
trong các shell khác, nhưng Fish ưa thích kiểm tra trạng thái rõ ràng hơn, vì nó sạch sẽ hơn và ít gây ra tác dụng phụ.
Về mặt thực hiện, xử lý lỗi trong Fish vẫn đơn giản nhưng mạnh mẽ, chủ yếu nhờ vào bản chất không chặn của nó và nhấn mạnh vào cú pháp rõ ràng, như được hiển thị trong các ví dụ. Mã lỗi kết hợp đẹp mắt với các hàm, cho phép quản lý lỗi một cách có mô-đun và dễ đọc.
Tham khảo thêm
- Tài liệu về điều kiện trong Fish: https://fishshell.com/docs/current/language.html#conditionals
- Hướng dẫn về xử lý lỗi trong Fish: https://fishshell.com/docs/current/tutorial.html#error-handling