<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>slidoooor-github (slidoooor)</title>
    <link>https://ruby-china.org/slidoooor-github</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>麻烦问下大家关于 ruby 的 throw 和 catch 的问题</title>
      <description>&lt;p&gt;小弟刚刚开始学 ruby，对 ruby 的错误处理有点疑惑，,下边是代码，&lt;img src="https://l.ruby-china.com/photo/2016/eb796cdfebd753c2f5e453c0719a7795.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def promptAndGet(prompt)
   print prompt
   res = readline.chomp
   throw :quitRequested if res == "!"
   return res
end

catch :quitRequested do
   name = promptAndGet("Name: ")
   age = promptAndGet("Age: ")
   sex = promptAndGet("Sex: ")
   # ..
   # 处理信息
end
promptAndGet("Name:")
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我的想法是&lt;img src="https://l.ruby-china.com/photo/2016/25df9d253a4a3913e904535c7cbff04f.png!large" title="" alt=""&gt;
这里如果我输入的等于感叹号他才会跳到错误处理，如果不是感叹号的话就会直接返回，但是好像并不是，我输入非感叹号字符之后他会直接让我输入 age，也就是走到了错误处理的第二个方法，,而且我想的是我输入之后他进入到错误处理再次调用这个方法，应该会形成一个循环，,但是并没有，所以这里有点疑惑，还有就是第一次输入感叹号是会跳到异常处理的，但是在异常处理这个方法输入感叹号就会报错，这里我也不太明白，因为有些绕，所以感觉自己也表达不太清楚，,麻烦大家了..&lt;/p&gt;</description>
      <author>slidoooor-github</author>
      <pubDate>Thu, 24 Nov 2016 19:46:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/31693</link>
      <guid>https://ruby-china.org/topics/31693</guid>
    </item>
  </channel>
</rss>
