Project1

标题: 关于eval和rescue的问题 [打印本页]

作者: taroxd    时间: 2014-1-5 17:30
标题: 关于eval和rescue的问题
本帖最后由 taroxd 于 2014-1-5 19:12 编辑

RUBY 代码复制
  1. class Test
  2.   def test
  3.     eval(gets)
  4.   rescue
  5.     puts $!
  6.   end
  7. end
  8.  
  9. a = Test.new.test


输入:“(”
(不包括双引号)

结果:

请问:为什么rescue无法捕捉到异常呢?
希望可以当gets写入的代码无法正常执行的时候总是进入rescue(即使输入的是“(”),要怎么办?
作者: mxymxy    时间: 2014-1-5 18:41
补充一句:
  1.     class Test
  2.       def test
  3.         <
  4.       rescue
  5.         puts $!
  6.       end
  7.     end
  8.      
  9.     a = Test.new.test
复制代码
也一样没法捕获异常。
作者: rmav    时间: 2014-1-5 18:53
rescue Exception
作者: 无脑之人    时间: 2014-1-5 20:06
rescue不加参数只能捕捉StandardError,当然你用Exception甚至Object【......】就能捕获所有异常
至于某些捕获不到SyntaxError的情况,那是因为那还没轮到rescue运行




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1