Menu
CoddyTech

什么是异常?

本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 43 课,共 56 课。

运行时出现问题时,例如除以零、将 "abc" 解析为整数,或对 nil 调用方法,Ruby 会引发异常。程序会停止,Ruby 会打印发生了什么以及问题发生的位置。

10 / 0
# ZeroDivisionError:除以 0

每种错误都有自己的类。常见的有几种:

  • ZeroDivisionError:整数除以零
  • ArgumentError:传递给方法的参数不正确(Integer("abc"))
  • NoMethodError:调用接收者没有的方法(nil.upcase)
  • TypeError:对错误类型的对象进行操作("a" + 1)

每个异常类都有一个 .message:当异常未被处理时,Ruby 会打印这段供人阅读的描述。接下来的课程会介绍如何捕获这些异常,让程序继续运行。

challenge icon

挑战

入门

读取一行输入,其中包含一个 Ruby 表达式名称。打印 Ruby 会为它引发的异常类名称。使用 case 语句(不需要实际引发异常):

  • divide-by-zero → ZeroDivisionError
  • nil-method → NoMethodError
  • bad-integer → ArgumentError
  • wrong-type → TypeError
  • 其他任何输入 → Unknown

输入 nil-method 时,输出为 NoMethodError。

亲手试试

kind = gets.chomp

# TODO:用 case 判断 kind ... 输出匹配的异常类名
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Ruby 在线编译器