我是一個絕對初學者編程。我喜歡紅寶石,並設置了koans。本節開始:ruby koans about_nil.rb - question fr/newbie
def test_you_dont_get_null_pointer_errors_when_calling_methods_on_nil
請解釋這條線:
rescue Exception => ex
我在本節想通了前兩個koans。
我是一個絕對初學者編程。我喜歡紅寶石,並設置了koans。本節開始:ruby koans about_nil.rb - question fr/newbie
def test_you_dont_get_null_pointer_errors_when_calling_methods_on_nil
請解釋這條線:
rescue Exception => ex
我在本節想通了前兩個koans。
該行指出,只要它拋出一個類型爲Exception
的異常,就可以挽救開始 - 救援塊內的代碼。事實證明,Exception是所有其他異常繼承的頂級異常(如語法錯誤,無方法錯誤等)。正因爲如此,所有的例外都將被拯救。然後它將該異常實例存儲在變量ex
中,您可以在該變量中進一步查看(例如回溯,消息等)。
I'd read this guide on Ruby Exceptions。
一個例子是這樣的:
begin
hey "hi"
rescue Exception => ex
puts ex.message
end
#=> Prints undefined method `hey' for main:Object
但是,如果開始塊中的代碼沒有給出錯誤,也不會下井營救分支。
begin
puts "hi"
rescue Exception => ex
puts "ERROR!"
end
#=> Prints "hi", and does not print ERROR!
謝謝邁克我理解你的答案的一部分與救濟。約翰 – 2011-04-12 03:11:16
@John,很高興聽到。 – 2011-04-12 03:14:14
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
這就是所謂的評論 「異常處理」。嘗試檢查維基百科。投票結束您的問題爲「一般參考」。 – 2011-04-11 21:11:39
@Pavel +1一般參考:http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_exceptions.html – 2011-04-11 22:59:17