Thật dễ dàng để tạo ngoại lệ của riêng bạn trong Ruby. Chỉ cần làm theo các bước sau:
1. Tạo một lớp học mới
Ngoại lệ là các lớp, giống như mọi thứ khác trong Ruby! Để tạo một loại ngoại lệ mới, chỉ cần tạo một lớp kế thừa từ StandardError hoặc một trong các lớp con của nó.
class MyError < StandardError
end
raise MyError
Theo quy ước, các ngoại lệ mới có tên lớp kết thúc bằng "Lỗi". Bạn cũng nên đặt các ngoại lệ tùy chỉnh bên trong một mô-đun. Điều đó có nghĩa là các lớp lỗi cuối cùng của bạn sẽ giống như sau:ActiveRecord::RecordNotFound
và Net::HTTP::ConnectionError
.
2. Thêm tin nhắn
Mỗi đối tượng ngoại lệ ruby có một thuộc tính thông báo. Đó là đoạn văn bản dài hơn được in bên cạnh tên ngoại lệ
Ví dụ về thuộc tính thông báo của ngoại lệ
Bạn có thể chỉ định một thông báo khi bạn nêu ra một ngoại lệ, như sau:
raise MyError, "My message"
Và bạn có thể thêm thông báo mặc định vào lớp lỗi tùy chỉnh của mình bằng cách thêm hàm tạo của riêng bạn.
class MyError < StandardError
def initialize(msg="My default message")
super
end
end
3. Thêm thuộc tính dữ liệu tùy chỉnh vào ngoại lệ của bạn
Bạn có thể thêm dữ liệu tùy chỉnh vào ngoại lệ của mình giống như cách bạn làm trong bất kỳ lớp nào khác. Hãy thêm một trình đọc thuộc tính vào lớp của chúng ta và cập nhật hàm tạo.
class MyError < StandardError
attr_reader :thing
def initialize(msg="My default message", thing="apple")
@thing = thing
super(msg)
end
end
begin
raise MyError.new("my message", "my thing")
rescue => e
puts e.thing # "my thing"
end
Đó là nó! Tạo một lỗi tùy chỉnh hoặc ngoại lệ trong Ruby thực sự không quá khó. Có một điều cần lưu ý. Lưu ý rằng chúng ta luôn kế thừa từ StandardError trong các ví dụ như thế nào? Cố ý đấy. Mặc dù có một lớp Exception trong Ruby, nhưng bạn KHÔNG BAO GIỜ được kế thừa trực tiếp từ nó. Để biết thêm thông tin về điều này, hãy xem bài viết của chúng tôi về sự khác biệt giữa Exception và StandardError