⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05 - generating and understanding tracebacks.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
#!/usr/bin/ruby                                                  # 1 # delegation.rb                                                  # 2 class CEO                                                        # 3  def CEO.new_vision                                             # 4    Manager.implement_vision                                     # 5  end                                                            # 6end                                                              # 7                                                                 # 8class Manager                                                    # 9  def Manager.implement_vision                                   # 10    Engineer.do_work                                             # 11  end                                                            # 12end                                                              # 13                                                                 # 14class Engineer                                                   # 15  def Engineer.do_work                                           # 16    puts 'How did I get here?'                                   # 17    first = true                                                 # 18    caller.each do |c|                                           # 19      puts %{#{(first ? 'I' : ' which')} was called by "#{c}"}   # 20      first = false                                              # 21    end                                                          # 22  end                                                            # 23end                                                              # 24                                                                 # 25CEO.new_vision                                                   # 26#---$ ./delegation.rbHow did I get here?I was called by "delegation.rb:11:in `implement_vision'" which was called by "delegation.rb:5:in `new_vision'" which was called by "delegation.rb:26"#---def raise_exception  raise Exception, 'You wanted me to raise an exception, so...'endbegin  raise_exceptionrescue Exception => e  puts "Backtrace of the exception:\n #{e.backtrace.join("\n ")}"end# Backtrace of the exception:# (irb):2:in `raise_exception'# (irb):5:in `irb_binding'# /usr/lib/ruby/1.8/irb/workspace.rb:52:in `irb_binding'# :0#---CALLER_RE = /(.*):([0-9]+)(:in \`(.*)')?/def parse_caller(l)  l.collect do |c|    captures = CALLER_RE.match(c)    [captures[1], captures[2], captures[4]]  endendbegin  raise_exceptionrescue Exception => e  puts "Exception history:"  first = true  parse_caller(e.backtrace).each do |file, line, method|    puts %{ #{first ? "L" : "because l"}ine #{line} in "#{file}"} +         %{ called "#{method}" }    first = false  endend# Exception history:#  Line 2 in "(irb)" called "raise_exception"#  because line 24 in "(irb)" called "irb_binding"#  because line 52 in "/usr/lib/ruby/1.8/irb/workspace.rb" called "irb_binding"#  because line 0 in "" called ""#---

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -