问题标签 [rescue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Ruby 救援没有捕捉到 StandardError
我正在为 Ruby Rails 应用程序编写测试,如果 Ruby 无法连接到它,我有一段代码应该可以捕获我的 Redis 服务器抛出的错误。目前,代码如下所示:
根据我尝试运行测试时的堆栈跟踪,该代码片段的第二行 - config.before(:all) {...} - 抛出Redis::CannotConnectError。经过大量“e.class.superclass.superclass ...”命令后,我确定此错误继承自StandardError。
之后我就卡住了。我尝试用“rescue Redis::CannotConnectError”捕捉错误,然后是“rescue”,最后是“rescue Exception”,但仍然抛出错误。但是,我在Ruby命令提示符下尝试了同样的事情,并且每次都捕获到异常
谁能帮我弄清楚这里发生了什么?谢谢!
exception - 如何捕获模拟的无限循环行为并使用 RSpec 使用救援块处理它
我有一个图书模型,它是一个 ruby 脚本,可将价格分配给程序中提到的某些预定义图书标题。我正在使用 Ruby 1.9.3-p327 和 rspec 2.11.0
如果用户输入任何字母数字数据或负数或 0 或任何具有小数的数据,则根据程序要求用户仅输入每本书的价格的正整数。我尝试使用 RSpec 来模拟这种行为。
我目前的挑战是如何捕捉错误的用户输入、随之而来的消息并适当地处理它,以便规范通过。我已经尝试了几件事,但下面的规范目前遇到了一个无限循环,输入价格的格式错误。PFB 我的规格。
谁能指出我如何正确处理这个问题的正确方向。我能够模拟被要求重新输入错误输入数据的用户。我的问题是如何在作为规范的一部分正确输入时停止它(根据实际的程序逻辑)。
我确实尝试了来自类似问题的建议之一,但它似乎对我不起作用。我可能会遗漏一些东西。该代码也可以从 Github 克隆。谢谢你。
ruby - 如何重复处理异常直到正确的结果?
我有一个自定义异常,我希望在执行该方法导致错误时多次引发和救援。我知道它最终会导致无异常结果。
使用 begin/rescue/end 似乎是在抛出异常并调用救援块时,如果再次抛出异常,程序将离开 begin/rescue/end 块并且错误结束程序。如何保持程序运行直到达到正确的结果?另外,我对正在发生的事情的看法是否不正确?
这基本上就是我想要发生的事情(但显然尽可能使用 DRY 的代码......这段代码只是为了说明而不是我要实现的)。
ruby - 救援后使用 ensure 和 else 有什么区别?
使用 和有什么区别
ensure
:并将进程放在
/li>begin
...rescue
...end
块之后?使用 和有什么区别
else
:并在之前继续该过程
/li>rescue
(假设baz_process
不会引发错误)?
ruby - 在 watir 中自动处理超时(等待和刷新)
我一直都知道,好的编码意味着:不要重复自己。但是这些天我一直在重复自己,试图让我的爬虫处理超时错误。
对于我单击的每个链接或按钮,我添加一个救援异常 => e 并刷新页面。
例如
变成
也许有一个更清洁、不重复的解决方案。我试过操纵 Watir::wait 但我无法让它工作..
ruby - 我是否必须使用 Ruby 在循环中拯救异常?
我对 ruby 的了解越来越多,并编写了一个偶尔会超时的脚本(进行多次 API 调用)。
我知道我需要这样rescue
的例外:
我的问题是我应该把那个rescue
块放在哪里。由于我在多个循环中进行多个 API 调用,我是否需要将该块放在每个 API 循环中?我宁愿只写rescue
一次该块,例如在脚本的末尾,并让它在脚本的每个循环中工作。我正在使用红宝石 1.9.3。
ruby - Ruby救援语法错误
我有以下代码行给我一个错误:
我收到的错误是这样的:
本质上,如果脚本超时,我只是尝试运行 API 删除调用。不过,我放入块中的内容似乎并不重要rescue
,我收到了同样的错误。我的rescue
方法语法有什么问题?
ruby - 在变量赋值中使用救援
我有这个
auth 是一个看起来像这样的哈希
有时,无论出于何种原因,性别不存在,我希望在创建新用户时为其设置默认值
如果我尝试
gender: auth.extra.raw_info.gender.try(:capitalize) || "Male"
但性别本身不存在,我不能try
对性别
使用 gender: auth.extra.raw_info.gender.capitalize rescue "Male"
也不起作用,因为它说我不能在 nil 上使用大写(这是性别)
有没有办法在不为此使用变量的情况下做到这一点(因为它会变得更加混乱)
ruby - Ruby 救援和重试特定代码块
我的脚本中有以下代码...
我的问题是retry
实际上要“重试”的是什么。如果脚本已经在一个循环中生成了 1000 封电子邮件并在另一个循环中发送了其中的 999 封,然后它在发送第 1000 封电子邮件时超时 - 它是否会重试遇到错误的特定代码行,是否会启动循环在第 1000 封电子邮件结束时,它会重新开始整个循环,还是从运行两个循环的脚本开始处开始?
我正在使用红宝石 1.9.3。
ruby - “救援例外”的替代方案
我有时会遇到一些意外错误,例如超时错误、503 错误等。我什至不知道我可能会收到一些错误。我不能通过执行以下操作来解释所有这些:
营救也是一个糟糕的主意Exception
。
我可以使用什么替代方案?我希望我的代码在出现错误时拯救所有这些;如果没有错误,我需要避免它。我希望能够杀死我的脚本但不跳过语法错误等。