Каково значение предоставленного кода в Ruby? - PullRequest
0 голосов
/ 04 февраля 2020

Я новичок в Ruby. Из приведенного ниже кода я понял, что в модуле AB C создается новый класс MyClass. Что делают с 1 по 4. Это вызывает различные исключения, которые являются подтипом CommonError?

class ABC::MyClass

  class AException < CommonError; end   #1
  class BException < CommonError; end   #2
  class CFailure < CommonError; end     #3
  class DException < CommonError; end   #4

  include ABC::Something

  # ::::::::::::::::::::::::::::::::::::

end 

class CommonError < Exception
end

1 Ответ

4 голосов
/ 04 февраля 2020

Это просто определение определенных c исключений, которые, предположительно, могут использоваться внутри кода где-то еще, например:

raise AException, "Something went wrong!"

Это означает, что вы можете rescue те, что позже:

begin
  do_stuff!
rescue AException => e
  puts "Uh oh, AException went off! Those are super bad!"
  puts e # The message supplied in the raise call
end

Причина CommonError заключается в том, чтобы выступать в качестве базового класса для всех остальных исключений. Аргументом rescue на самом деле является не указанный c класс, а класс и все подклассы , поэтому, если вы rescue CommonError получите все эти и, возможно, другие, определенные в другом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...