什么是异常?
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 43 课,共 56 课。
运行时出现问题时,例如除以零、将 "abc" 解析为整数,或对 nil 调用方法,Ruby 会引发异常。程序会停止,Ruby 会打印发生了什么以及问题发生的位置。
10 / 0
# ZeroDivisionError:除以 0每种错误都有自己的类。常见的有几种:
ZeroDivisionError:整数除以零ArgumentError:传递给方法的参数不正确(Integer("abc"))
NoMethodError:调用接收者没有的方法(nil.upcase)TypeError:对错误类型的对象进行操作("a" + 1)
每个异常类都有一个 .message:当异常未被处理时,Ruby 会打印这段供人阅读的描述。接下来的课程会介绍如何捕获这些异常,让程序继续运行。
挑战
入门读取一行输入,其中包含一个 Ruby 表达式名称。打印 Ruby 会为它引发的异常类名称。使用 case 语句(不需要实际引发异常):
divide-by-zero→ZeroDivisionErrornil-method→NoMethodErrorbad-integer→ArgumentErrorwrong-type→TypeError- 其他任何输入 →
Unknown
输入 nil-method 时,输出为 NoMethodError。
亲手试试
kind = gets.chomp
# TODO:用 case 判断 kind ... 输出匹配的异常类名
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器