📜  在 Ruby 中引发异常(1)

📅  最后修改于: 2023-12-03 14:51:09.882000             🧑  作者: Mango

在 Ruby 中引发异常

在编写程序时,我们需要考虑一些异常情况。当发生异常时,我们需要以某种方式处理异常情况,以便程序能够正常运行。在 Ruby 中,我们可以通过引发异常来处理异常情况。

什么是异常?

异常是由于程序出现意外情况而引起的错误。例如,当试图打开一个不存在的文件时,程序会引发异常。当程序引发异常时,它会停止执行,并将控制权返回给调用它的代码。

在 Ruby 中,异常是通过 raise 关键字引发的。 raise 关键字还可以将一个异常对象抛出到异常处理程序中。

如何引发异常?

要引发一个异常,可以使用 raise 关键字,后跟一个异常对象或异常类的名称。例如,以下代码引发了一个 RuntimeError 异常:

raise "something went wrong"

您还可以指定一个异常类的名称,它将自动实例化为一个异常对象:

raise RuntimeError, "something went wrong"

您还可以使用 fail 关键字来引发异常,它与 raise 关键字完全相同:

fail "something went wrong"
如何处理异常?

在 Ruby 中,我们可以使用 begin...rescue...end 块来处理异常。在 begin 块中放置可能引发异常的代码,如果代码正常运行,则跳过 rescue 块中的代码。如果在 begin 块中引发了异常,则会调用 rescue 块中的代码。

例如,以下代码展示了如何使用 begin...rescue...end 块来处理异常:

begin
  # 可能引发异常的代码
  raise "something went wrong"
rescue
  # 异常处理程序,可以使用 $! 获取当前异常对象
  puts "rescued an exception: #{$!}"
end

运行上面的代码,我们会得到如下输出:

rescued an exception: something went wrong

您还可以指定要捕获的异常类型,例如 RuntimeError,如下所示:

begin
  # 可能引发异常的代码
  raise "something went wrong"
rescue RuntimeError
  # 指定运行时错误异常的处理程序
  puts "rescued a runtime error: #{$!}"
rescue
  # 捕获所有其他类型的异常
  puts "rescued an exception: #{$!}"
end
总结

在 Ruby 中引发异常是一种处理异常情况的有效方法。可以使用 raise 关键字来引发异常,并使用 begin...rescue...end 块来处理异常。在处理异常时,我们可以使用异常对象的信息来调试程序,以便修复错误。