Ruby异常处理、类型系统与日期时间类详解
1. Ruby异常处理机制
1.1 异常捕获流程
当Ruby中抛出异常时,它会扫描调用栈,直至找到包含 begin/end 块、方法体或带有 rescue 修饰符的语句。对于块中的每个 rescue 子句,Ruby会依次将抛出的异常与 rescue 子句的参数进行比较,使用 _parameter_ === $! 进行测试。若匹配,Ruby将执行 rescue 体并停止搜索。若匹配的 rescue 子句以 => 和变量名结尾,该变量将被设为 $! 。
如果没有 rescue 子句匹配抛出的异常,Ruby会向上移动栈,寻找更高层匹配的 begin/end 块。若异常传播到主线程顶层仍未被捕获,程序将终止并显示消息。
1.2 else 和 ensure 子句
-
else子句 :若代码正常执行到块末尾且未返回、未抛出异常,else子句体将被执行。else子句执行期间抛出的异常不会被同一块中的rescue子句捕获。
超级会员免费看
订阅专栏 解锁全文
32

被折叠的 条评论
为什么被折叠?



