设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1577|回复: 3
打印 上一主题 下一主题

[已经解决] 关于eval和rescue的问题

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

跳转到指定楼层
1
发表于 2014-1-5 17:30:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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(即使输入的是“(”),要怎么办?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
103 小时
注册时间
2013-12-12
帖子
200
来自 3楼
发表于 2014-1-5 18:53:56 | 只看该作者
rescue Exception

点评

异常不是那样用的- -!  发表于 2014-1-5 19:14
好吧,果然可以…… 但是定义时候的异常貌似仍然没办法捕获……  发表于 2014-1-5 19:05
你不带参数,只是捕捉StandardError异常  发表于 2014-1-5 19:03
问题是解决了,能否解释一下原理?  发表于 2014-1-5 18:59

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 问题是解决了

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
129
在线时间
124 小时
注册时间
2011-9-12
帖子
76
2
发表于 2014-1-5 18:41:41 | 只看该作者
补充一句:
  1.     class Test
  2.       def test
  3.         <
  4.       rescue
  5.         puts $!
  6.       end
  7.     end
  8.      
  9.     a = Test.new.test
复制代码
也一样没法捕获异常。
本帳號已經作廢。新ID是「湖中神劍」。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
4
发表于 2014-1-5 20:06:58 | 只看该作者
rescue不加参数只能捕捉StandardError,当然你用Exception甚至Object【......】就能捕获所有异常
至于某些捕获不到SyntaxError的情况,那是因为那还没轮到rescue运行
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 03:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表