在ruby脚本中收集异常
我正在编写一个脚本,从各种url收集数据。我想将在ruby脚本中收集异常,ruby,arrays,Ruby,Arrays,我正在编写一个脚本,从各种url收集数据。我想将begin rescue块中的错误收集到一个数组中,以便在程序以详细模式运行时输出它们。正常使用时,将忽略失败的连接,脚本将移动到下一个url 我认为最好的方法是在脚本顶部创建一个数组errArray=array.new来保存错误,然后执行以下操作: rescue Exception => e errArray << e.message 感谢任何帮助(和建设性的批评) 编辑:模具功能: def die(e) p erro
begin rescue
块中的错误收集到一个数组中,以便在程序以详细模式运行时输出它们。正常使用时,将忽略失败的连接,脚本将移动到下一个url
我认为最好的方法是在脚本顶部创建一个数组errArray=array.new
来保存错误,然后执行以下操作:
rescue Exception => e
errArray << e.message
感谢任何帮助(和建设性的批评)
编辑:模具功能:
def die(e)
p errorArray unless errorArray.empty?
# Some other irrelevant code
end
errArray
不是全局变量,因此方法无法访问它。您可以通过$err\u array
将其声明为全局变量
但是,最好的解决方案是创建一个简单的类:
class ExceptionCollector
def collect
yield
rescue => e
errors << e.message
end
def errors
@errors ||= []
end
end
errArray
不是全局变量,因此方法无法访问它。您可以通过$err\u array
将其声明为全局变量
但是,最好的解决方案是创建一个简单的类:
class ExceptionCollector
def collect
yield
rescue => e
errors << e.message
end
def errors
@errors ||= []
end
end
然后,我们需要查看
die
method.的完整代码,告诉您为什么错误未定义的局部变量或方法“errArray”
。这是一个与范围相关的问题。创建全局变量$errArray=Array.new
。正如您所说,我认为最好的方法是在脚本顶部创建一个数组errArray=Array.new来保存错误。什么是e
?给出完整的正文,然后我们需要查看die
method.的完整代码,告诉您为什么错误未定义的局部变量或方法“errArray”
。这是一个与范围相关的问题。创建全局变量$errArray=Array.new
。正如您所说,我认为最好的方法是在脚本顶部创建一个数组errArray=Array.new来保存错误。什么是e
?全身心地感谢。非常有用。例如,我可以使用$collect方法中调用$logger的方法中的变量吗?谢谢。非常有用。例如,我可以使用$collect方法中调用$logger的方法中的变量吗?
$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