我使用Pry gem(http://pryrepl.org)来测试我的程序。有时会出现异常,所以我使用这种语法:
require "pry"
begin
statement 1
statement 2 *
statement 3
rescue => e
binding.pry
end
当"声明2"出现异常时我在救援条款中得到了一个撬开的话题。我可以检查我的变量等," e.backtrace"显示异常的原因,以及导致它的行等。然后我通常在源文件中进行一些更改以避免下次异常。但是我不想再次启动我的程序,因为很长一段时间再次到达"声明2"。所以我的问题是如何退出Pry会话并继续我的程序"声明3"?如果我尝试键入"继续"或" next"我只收到错误消息。
答案 0 :(得分:1)
所以我的问题是如何退出Pry会话并继续我的 关于“声明3”的节目?
如果pry-debugger不适合你,那么:
require "pry"
begin
statement 1
statement 2
rescue => e
binding.pry
end
begin
statement 3
rescue => e
binding.pry
end
例如:
require 'pry'
def a
puts 'a'
end
def b
puts 'b'
nil[1]
end
def c
puts 'c'
end
begin
a
b
rescue => e
binding.pry
end
begin
c
rescue => e
binding.pry
end
- 输出: -
~/ruby_programs$ r 1.rb
a
b
From: /Users/7stud/ruby_programs/1.rb @ line 22 :
17:
18: begin
19: a
20: b
21: rescue => e
=> 22: binding.pry
23: end
24:
25: begin
26: c
27: rescue => e
[1] pry(main)> exit
c
~/ruby_programs$
当然,如果您的问题确实存在,那将无效,
如果我的程序在随机行上抛出错误,我怎么能撬到 继续执行下一行?
...
如果我尝试输入“继续”或“下一步”,我只会收到错误消息。
好的执行就在这里:
require "pry"
begin
statement 1
statement 2 *
statement 3
rescue => e
binding.pry #<== Pry executed here
end
#<=== Next line to execute after rescue clause
答案 1 :(得分:0)
我不认为可以更改源并在执行此操作后继续执行。我会尝试将pry语句放在语句2附近,然后重新运行。
statement 1
binding.pry
statement 2
statement 3