ruby – 在Chef中,为什么提出的异常没有获救?

ruby – 在Chef中,为什么提出的异常没有获救?,第1张

概述在Chef中,为什么这段代码没有捕获bash资源中抛出的异常?如果我运行此代码,即使抛出异常,我也永远不会访问 python资源.错误是预期的,这就是为什么我抓住它,然后转向pymongo并以这种方式修复它. begin bash "mongo fix" do code "mongo --verbose #{filename}" action :run 在Chef中,为什么这段代码没有捕获bash资源中抛出的异常?如果我运行此代码,即使抛出异常,我也永远不会访问 python资源.错误是预期的,这就是为什么我抓住它,然后转向pymongo并以这种方式修复它.

begin    bash "mongo fix" do        code "mongo --verbose #{filename}"        action :run    endrescue    python 'pymongo reconfig'  do        code "Pymongo does a catch and reconfig"    endend

这是异常输出

[2013-03-05T20:03:55+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: bash[mongo fix (noudata::mongo line 77) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0],but received '253'---- Begin output of "bash"  "/tmp/chef-script20130305-3916-14xxhn5-0" ----STDOUT: MongoDB shell version: 2.2.3Tue Mar  5 20:03:55 versionCmpTest passedTue Mar  5 20:03:55 versionArrayTest passedconnecting to: testTue Mar  5 20:03:55 creating new connection to:127.0.0.1:27017Tue Mar  5 20:03:55 BackgroundJob starting: ConnectBGTue Mar  5 20:03:55 connected connection!true{"errmsg" : "replSetReconfig command must be sent to the current replica set primary.","ok" : 0}Tue Mar  5 20:03:55 uncaught exception: [object bson_object]Failed to load: /tmp/test.JsSTDERR:---- End output of "bash"  "/tmp/chef-script20130305-3916-14xxhn5-0" ----Ran "bash"  "/tmp/chef-script20130305-3916-14xxhn5-0" returned 253
解决方法 begin块中的代码生成Chef :: Resource :: Bash资源的实例,分配资源的代码和 *** 作属性,并将资源添加到run_context.resource_collection.资源在任何意义上都不是“运行”的.创建资源的实例不会引发任何异常,因此不会运行rescue块中的代码.

稍后,一旦所有配方代码完成运行,Chef将遍历run_context.resource_collection中的资源.对于每个资源,Chef将运行资源的 *** 作.对于bash资源,这意味着运行资源的code属性中给出的字符串.请注意,这在配方和所有其他配方完成运行后很好地发生,因此这在您的开始块之外发生.此资源在运行其 *** 作时引发的任何异常都不会传播到您的开始块,因为 *** 作不是从您的开始块中调用,而是从它之后调用.

你可以尝试这样的事情:

bash "mongo fix" do  code "mongo --verbose #{filename} || python pymongo reconfig"end
总结

以上是内存溢出为你收集整理的ruby – 在Chef中,为什么提出的异常没有获救?全部内容,希望文章能够帮你解决ruby – 在Chef中,为什么提出的异常没有获救?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1290531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存