Project1

标题: 又有一个脚本问题 [打印本页]

作者: 地狱的蓝炎    时间: 2008-8-21 06:48
标题: 又有一个脚本问题
  1. begin
  2.   表达式 ..
  3. [rescue [error_type,..] [then]
  4.   表达式 ..]..
  5. [ensure
  6.   表达式 ..]
  7. end
复制代码

若给出了 rescue 部分(可以有若干个)的话,就可以在发生异常时捕捉到它。若存在与异常类型一致的 rescue 部分的话,就执行 rescue 的内容。发生异常时,可以使用内部变量 $! 来查看异常的情况。

若 error_type 被省略,则将捕捉 StandardError 的子类中的所有异常。 Ruby 的大部分内部异常是 StandardError 的子类。具体请参考 内部异常类。

在 rescue 部分中,error_type 与普通的参数一样接受计算,若符合的话就执行相应部分的内容。若 error_type 的计算值既非类又非模块的话,则引发 TypeError 异常。

若存在 ensure 部分的话,则在 begin 表达式结束之前一定会计算它。

begin 表达式会返回其自身或 rescue 部分最后的计算结果。

上面这段是帮助文件里面的东西,好像看不太懂。
哪位大仙能详细的解释一下,拜谢!{/ll}
作者: 凌冰    时间: 2008-8-21 11:05
说白了就是捕捉错误而已
如果捕捉到错误,就执行then后面的语句
作者: 地狱的蓝炎    时间: 2008-8-21 18:23
那也就是说error_type这一段不用自己打喽?
还有ensure后面的表达式是什么?
作者: 地狱的蓝炎    时间: 2008-8-21 23:12
哦,我突然领悟了!
就是ensure还不太清楚........
谁能给点提示{/hx}
作者: dbshy    时间: 2008-8-22 02:09
无论begin块是否成功,ensure代码域都将执行.

可以只用ensure或只用rescue,但当它们在同一begin...end域中时, rescue 必须放在 ensure前面.


[LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 凌冰    时间: 2008-8-22 05:40
以下引用地狱的蓝炎于2008-8-21 10:23:55的发言:

那也就是说error_type这一段不用自己打喽?

缺省是为捕捉StandardError,详细情况可以查看F1
当然也可以捕捉其他错误,如果有必要的话,但一般情况下,StandardError就足够了 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 地狱的蓝炎    时间: 2008-8-22 23:56
感谢两位!!!非常感谢!!!就是积分有点少........(以后决定加大悬赏力度)




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