Sự khác biệt giữa throw/catch và raise/rescue là gì?
Sự khác biệt giữa throw/catch và raise/rescue là gì?
Trong Ruby, throw/catch và raise/rescue đều là cơ chế để xử lý các tình huống ngoại lệ, nhưng chúng được sử dụng trong các trường hợp khác nhau và có những đặc điểm riêng biệt:
throw/catchthrow/catch được sử dụng để thoát khỏi một khối lệnh hoặc phương thức một cách nhanh chóng khi không cần thực hiện thêm công việc nào nữa. Điều này thường được sử dụng trong các tình huống kiểm soát luồng chương trình, chứ không phải để xử lý lỗithrow được gọi, nó sẽ "ném" việc thực thi lên khối catch tương ứng, phá vỡ tất cả các khối lệnh và lời gọi phương thức ở giữathrow có thể có một "payload" là giá trị thứ hai được truyền vào, và giá trị này sẽ trở thành giá trị trả về của khối catchraise/rescueraise/rescue được sử dụng để xử lý các lỗi hoặc ngoại lệ (exceptions) trong chương trình. Khi một lỗi xảy ra, `raise...middle