Gần đây, tôi chuyển đổi website này sang viết bằng Rust và rất tâm đắc với phong cách xử trí lỗi (error handling) của Rust, khi ứng dụng vào việc viết web. tôi sẽ trình bày tại sao.
Trước Rust, hầu hết các ngôn ngữ lập trình tôi kinh qua đều dùng phong cách xử trí lỗi là exception handling. Một hàm đang chạy nửa chừng, nếu gặp lỗi sẽ bắn ra một exception và dừng ngay tại đó. Hàm nào gọi nó bên ngoài sẽ dùng cấu trúc try ... except
, try ... catch
để phòng bị, bắt những exception này và có hướng xử trí tương ứng khi exception xảy ra. Cách làm này có ưu điểm là không cần nghĩ nhiều, giúp lập trình viên làm nhanh, cho ra sản phẩm lẹ. Tuy nhiên nó có nhược điểm là nhìn vào signature (mô tả kiểu dữ liệu đầu vào và đầu ra) của một hàm, không có cách nào biết được hàm đó có thể bắn ra những exception nào. Rust thì khác, những lỗi nào có thể xảy ra sẽ buộc phải khai báo trong signature của hàm. Ví dụ nhìn signature của hàm dùng để parse một chuỗi thành số nguyên:
...