0

我不是 Ruby 方面的专家,但我试图在某些脚本中跟踪问题,但无法联系到这个特定脚本的专家,以了解我们收到此错误的原因。我已经将事情缩小到这个特定的功能,据我所知,第一个 print 语句发生但 end print 语句没有。堆栈级别太深错误仅在此函数完全存在时发生,如下所示:

def load_power_ports(io_info)
  return if !io_info
  io_info.each_key do |key|
    print key
    if !@power_controllers[key.to_s.downcase]
      @power_controllers[key.to_s.downcase] = Object.const_get($equipment_table['power_controller'][key.to_s.downcase][0].driver_class_name).new($equipment_table['power_controller'][key.to_s.downcase][0])
    end
  end
  print "end of equipment power block"
rescue Exception => e
  raise e.to_s + "\nUnable to create power controller: " + io_info.to_s
end

打印语句仅用于查看正在传递哪些信息、程序正在执行多远以及正在执行的迭代。

4

1 回答 1

1

是直接调用还是间接driver_class_name调用的构造函数?load_power_ports如果是这样,你最终会得到无限递归,这会让你的堆栈溢出(哦,讽刺的是)。这是我能看到的唯一可能存在该问题的地方。

于 2013-03-28T01:38:17.100 回答