Computer >> Máy Tính >  >> Lập trình >> Ruby

Các ngoại lệ tùy chỉnh trong Ruby

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::RecordNotFoundNet::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ệ

Các ngoại lệ tùy chỉnh trong Ruby 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