复制代码
- begin
- 表达式 ..
- [rescue [error_type,..] [then]
- 表达式 ..]..
- [ensure
- 表达式 ..]
- end
若给出了 rescue 部分(可以有若干个)的话,就可以在发生异常时捕捉到它。若存在与异常类型一致的 rescue 部分的话,就执行 rescue 的内容。发生异常时,可以使用内部变量 $! 来查看异常的情况。
若 error_type 被省略,则将捕捉 StandardError 的子类中的所有异常。 Ruby 的大部分内部异常是 StandardError 的子类。具体请参考 内部异常类。
在 rescue 部分中,error_type 与普通的参数一样接受计算,若符合的话就执行相应部分的内容。若 error_type 的计算值既非类又非模块的话,则引发 TypeError 异常。
若存在 ensure 部分的话,则在 begin 表达式结束之前一定会计算它。
begin 表达式会返回其自身或 rescue 部分最后的计算结果。
以下引用地狱的蓝炎于2008-8-21 10:23:55的发言:
那也就是说error_type这一段不用自己打喽?
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |