【发布时间】:2013-09-20 20:00:52
【问题描述】:
一些背景。我想删除 AWS Redshift 集群,这个过程需要 30 多分钟。所以这就是我想做的:
- 开始删除
- 每 1 分钟检查一次集群状态(应该是“正在删除”)
- 删除集群时,命令会失败(因为它 找不到集群了)。所以记录一些消息并继续脚本的其余部分
这是我在 while 循环中运行的命令,用于在开始删除后检查集群状态:
resp = redshift.client.describe_clusters(:cluster_identifier=>"blahblahblah")
上述命令将在删除过程继续时将集群状态设为deleting。但是一旦集群被完全删除,那么命令本身就会失败,因为它找不到集群blahblahblah。
这是删除集群后命令的错误:
/var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/core/client.rb:366:in `return_or_raise': Cluster blahblahblah not found. (AWS::Redshift::Errors::ClusterNotFound)
我同意这个错误。但这使我的脚本突然退出。所以我想记录一条消息说The cluster is deleted....continuing 并继续我的脚本。
我尝试了以下设置
resp = redshift.client.describe_clusters(:cluster_identifier=>"blahblahblah")
|| raise (“The cluster is deleted....continuing”)
我还尝试了https://www.ruby-forum.com/topic/133876 中提到的一些建议 但这不起作用。一旦上述命令找不到集群,我的脚本就会退出。
问题: 如何忽略错误,打印我自己的消息“集群已删除....继续”并继续执行脚本?
谢谢。
【问题讨论】:
标签: ruby exception-handling amazon-web-services amazon-redshift