Xử lý lỗi (Error Handling)

Lỗi là cái gì đó thực tế của cuộc sống trong phần mềm, do đó Rust có một số tính năng cho xử lý các tình huống này nơi mà một thứ gì đó là lỗi. Trong nhiều trường hợp, Rust yêu cầu bạn kiến thức về lỗi ấy và hành động trước khi code được biên dịch. Yêu cầu này làm cho chương trình của bạn nhiều thống nhất bởi đảm bảo rằng bạn sẽ khám phá lỗi và xử lý chúng một cách chính các trước khi bạn có triển khai code tới môi trường production!

Rust nhóm các lỗi thành 2 loại chính: recoverable (có thể phục hồi) và unrecoverable (không thể phục hồi) Cho một lỗi có thể phục hồi, giống như a file not found (không tìm thấy file), chúng hầu như chỉ muốn thông báo vấn đề với người dùng và thử lại điều khiển. Các lỗi không thể phục hồi là luôn luôn dấu hiêu cảu bugs, giống như cố gắng truy xuất một vị trí vượt quá một mảng, và do đó bạn muốn dừng chương trình ngay lập tức.

Hầu hết các ngôn ngữ không phân biết giữa 2 kiểu lỗi và xử lý chúng trong cùng một cách, sử dụng nguyên lý ngoại lệ (exceptions). Rust không có exceptions. Thay vào đó, nó có kiểu Result<T, E> cho lỗi có thể phục hồi và macro panic! cho lỗi dừng xử lý khi chương tình trạm chán lỗi không thể phục hồi. Chương này sẽ bao quát panic! trước và sau đó sẽ nói về giá trị trở `Result<T, E>. Thêm vào đó, chúng ta sẽ khám phá cân nhắc khi quyết định liệu cố để phục hồi lại từ một lỗi hay là dừng xử lý lại.