ruby koans about_nil.rb - вопрос от fr / newbie - PullRequest
4 голосов
/ 12 апреля 2011

Я абсолютный новичок в программировании. Я тяготею к рубину и установил коаны. Раздел начинается с:

def test_you_dont_get_null_pointer_errors_when_calling_methods_on_nil

Пожалуйста, объясните эту строку:

rescue Exception => ex

Я выяснил первые два коана в этом разделе.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Эта строка состояния спасает код в блоке begin-rescue всякий раз, когда выдается исключение с типом Exception.Просто так получается, что Exception - это исключение верхнего уровня, от которого наследуются все остальные исключения (такие как синтаксическая ошибка, ошибка метода и т. Д.).Из-за этого все исключения будут спасены.Затем он сохраняет этот экземпляр исключительной ситуации в переменной ex, в которой вы можете посмотреть далее (например, обратная трассировка, сообщение и т. Д.)..

Примером может быть такой:

begin
    hey "hi"
rescue Exception => ex
  puts ex.message
end
#=> Prints undefined method `hey' for main:Object

Однако, если код в блоке begin не дает ошибок, он не будет переходить в ветвь восстановления.

1 голос
/ 12 апреля 2011

Читали ли вы комментарий при начале метода?

  def test_you_dont_get_null_pointer_errors_when_calling_methods_on_nil
    # What happens when you call a method that doesn't exist. The
    # following begin/rescue/end code block captures the exception and
    # make some assertions about it.
    begin
      nil.some_method_nil_doesnt_know_about
    rescue Exception => ex
      # What exception has been caught?
      assert_equal NoMethodError, ex.class

      # What message was attached to the exception?
      # (HINT: replace __ with part of the error message.)
      assert_match(/undefined method/, ex.message)
    end
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...