gpt4 book ai didi

ruby - 救援条款中未捕获 AWS S3 NoSuchBucket 异常

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:46 26 4
gpt4 key购买 nike

我正在尝试使用 AWS SDK 在 Ruby 中获取一个存储桶,并 try catch NoSuchBucket 错误。问题是,我的救援 block 没有捕捉到错误,所以我的应用程序崩溃了。相关代码如下:

begin
b = s3.buckets[bucket_name]

rescue AWS::S3::Errors::NoSuchBucket
puts Invalid bucket name.
exit 1
end

错误信息是:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/aws-sdk-1.5.6/lib/aws/core/client.rb:277:in
`return_or_raise': The specified bucket does not exist (AWS::S3::Errors::NoSuchBucket)

我只是犯了一个愚蠢的初学者语法错误,还是 AWS 代码中存在一个实际上并没有抛出错误的错误?我也试过捕获所有错误,但仍然没有成功。

最佳答案

b = s3.buckets[bucket_name]

实际上不会发出任何请求,也不会通过像 NoSuchBucket 这样的异常。

它只是返回一个知道其名称的桶对象。仅当您实际尝试对存储桶执行某些操作(列出其内容、向其添加文件)时才会发生请求,并且此时会引发 NoSuchBucket。这是在您的 begin block 之外,因此您的 rescue 不会处理它。如果你需要拯救那个异常,你需要把你的开始/拯救放在你实际使用桶的地方。

如果你只是想验证它是否确实存在,你可以做类似的事情

s3.buckets[bucket_name].exists?

关于ruby - 救援条款中未捕获 AWS S3 NoSuchBucket 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com