Bạn có thể tạo một lớp con của một ngoại lệ để làm cho nó mang tính mô tả hơn, nhưng bạn nên đặt thông báo 'mặc định' như thế nào?Các lớp Lỗi ngoại lệ của Ruby
class MyError < StandardError
# default message = "You've triggered a MyError"
end
begin
raise MyError, "A custom message"
rescue Exception => e
p e.message
end
begin
raise MyError
raise Exception => e
p e.message
end
Đầu tiên nên đầu ra 'Một thông điệp tùy chỉnh'
Thứ hai nên đầu ra 'Bạn đã kích hoạt một MyError'
Bất kỳ lời đề nghị như thực hành tốt nhất?
Chỉ cần 'super' là đủ. Nếu bạn gọi 'super' mà không có danh sách đối số, nó sẽ đơn giản truyền vào tất cả các đối số, đó là lý do tại sao, khi bạn thực sự muốn truyền tham số * no *, bạn phải gọi' super() '. –
@ JörgWMittag Tại sao tất cả các lớp lỗi tùy chỉnh kế thừa từ 'StandardError'? Bất kỳ lý do đằng sau nó? –
@ArupRakshit Vì két an toàn. Bất cứ khi nào giải thoát khỏi lỗi, nó phải là 'StandardError' (hoặc thấp hơn), vì các lỗi cấp cao hơn như' Exception' thậm chí có thể bị ném khi nhấn CTL-C vv. Xem phần này để biết thêm thông tin http://rails-bestpractices.com/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror – Sean