📜  红宝石 |异常类及其方法(1)

📅  最后修改于: 2023-12-03 15:11:35.692000             🧑  作者: Mango

红宝石 | 异常类及其方法

在 Ruby 中,异常处理是有很重要的地位的。在程序执行过程中如果出现异常情况(例如除以 0),程序会停止执行并抛出异常,如果没有相应的异常处理程序,则程序会崩溃。

Ruby 中,异常是一种可被捕获的信号。当一个程序出现异常时,它会生成一个异常对象并抛出(raise)它。如果异常没有被处理,则程序将终止。

异常类

Ruby 中提供了一些内置的异常类,如下:

  1. Exception: 是标准异常类的父类,用于表示所有异常的基类
  2. ArgumentError: 传递给方法的参数错误
  3. IndexError: 访问的数组或者字符越界
  4. RuntimeError: 运行时错误
  5. SyntaxError: 语法错误
  6. TypeError: 对象类型不匹配
  7. ZeroDivisionError: 除以 0

当然,我们也可以自己定义异常类。

异常方法

在异常处理中,常常会使用到以下几个方法:

  1. raise(exception, message): 抛出一个指定的异常,同时可以添加一条错误信息。
  2. rescue (exception): rescue 关键字后面跟随一个异常类,表示对该异常进行捕获
  3. rescue => e: 如果不指定异常类,则可以使用 => 把异常对象保存到变量中
  4. ensure: 无论异常是否发生,ensure 关键字后面的代码块都会被执行

下面是一些示例代码:

def divide(x, y)
  begin
    result = x / y
  rescue ZeroDivisionError => e
    puts e.message
    puts "Cannot divide by 0"
  ensure
    puts "Division finished"
  end
end

puts divide(10, 0)

上述代码中,代码块 beginend 中包含了可能抛出异常的代码。在 rescue 中,指定了要捕获的异常类型 ZeroDivisionError 并将异常对象保存到变量 e 中。在 ensure 中,则是无论是否产生异常,都会执行其中的代码块。

总结

在 Ruby 中,异常处理是十分重要的一部分,掌握异常类的使用以及常见的异常方法可以帮助我们更好地进行程序开发。