ruby - 收集 ruby​​ 脚本中的异常

标签 ruby arrays

我正在编写一个脚本,用于从各种 url 收集数据。我想将 beginrescue block 中的错误收集到一个数组中,以便在程序以详细模式运行时输出它们。正常使用时,失败的连接将被忽略,脚本将移至下一个 url。

我认为最好的方法是在脚本顶部创建一个数组 errArray = Array.new 来保存错误,然后执行以下操作:

rescue Exception => e
  errArray << e.message

在各种函数中记录错误。 die 函数使用 p 输出数组,除非该数组为空。但是,我收到错误

Undefined local variable or method 'errArray'

任何帮助(和建设性批评)表示赞赏。

编辑:模具功能:

def die(e)
  p errorArray unless errorArray.empty?
# Some other irrelevant code
end

最佳答案

errArray 不是全局变量,因此方法无法访问它。您可以通过$err_array将其声明为全局变量。

但是最好的解决方案是创建一个简单的类:

class ExceptionCollector

  def collect
    yield
  rescue => e
    errors << e.message
  end

  def errors
    @errors ||= []
  end
end

然后简单:

$logger = ExceptionCollector.new

$logger.collect do
  # this may raise an exception
end

def foo
  $logger.collect do
    # another exception
  end
end

$logger.errors    #=> list of errors 

关于ruby - 收集 ruby​​ 脚本中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049821/

相关文章:

iOS swift : Filter array to unique items

javascript - 重命名上传的文件 Ruby On Rails

ruby-on-rails - 在 Ruby on Rails 中更改数据库列的命令

php activerecord通过一对多关系获取实例属性

javascript - 使用分隔值在另一个(主)数组内创建一个数组

iphone - Objective C 数组元素都以相同的值结束

c - 即时返回数组 (C)

javascript - 添加同类javascript的输入值

ruby - 是否可以在不运行默认 Recipe 的情况下运行 Chef Recipe

ruby-on-rails - RefineryCMS 与现有 Rails 3.1+ 应用程序集成