gpt4 book ai didi

ruby - 捕获大量错误并将所有错误捕获为常量

转载 作者:行者123 更新时间:2023-12-03 08:26:41 25 4
gpt4 key购买 nike

在救援子句中,如果错误在数组中,是否可以将所有错误放入数组并从那里调用?

例如:

FATAL_ERRORS = %w(Mechanize::ResponseCodeError RestClient::ServiceUnavailable OpenSSL::SSL::SSLError RestClient::BadGateway)

begin
# Do some cool stuff
rescue FATAL_ERRORS => e
puts "Exiting #{e}"

我尝试过的

我尝试从当前线程中捕获错误:
FATAL_ERRORS = Thread.current[:errors] ||= %w(Mechanize::ResponseCodeError RestClient::ServiceUnavailable OpenSSL::SSL::SSLError RestClient::BadGateway)

begin
# Do some cool stuff
rescue FATAL_ERRORS => e
puts "Exiting #{e}"

我也尝试了splat运算符:
FATAL_ERRORS = %w(Mechanize::ResponseCodeError RestClient::ServiceUnavailable OpenSSL::SSL::SSLError RestClient::BadGateway)

begin
# Do some cool stuff
rescue *FATAL_ERRORS => e
puts "Exiting #{e}"

splat和线程都会产生以下异常: rescue in <main>': class or module required for rescue clause (TypeError)
我如何才能成功地挽救多个错误而又不将其全部放到挽救线上并使它看起来很糟?

最佳答案

摔得痛不起作用。问题在于您使FATAL_ERRORS保持不变。使用%w表示法,它将值转换为字符串:

 %w(Mechanize::ResponseCodeError)
=> ["Mechanize::ResponseCodeError"] # Note the string value instead of class constant.

尝试
FATAL_ERRORS = [Mechanize::ResponseCodeError, RestClient::ServiceUnavailable, OpenSSL::SSL::SSLError, RestClient::BadGateway]

关于ruby - 捕获大量错误并将所有错误捕获为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154898/

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