Ruby 异常学习笔记
什么是异常?
在 Ruby 中,异常(Exception)是一种流程控制结构,它用于处理程序中的错误或不正常情况。当遇到异常时,程序将会跳转到异常处理器中进行处理。
如何抛出异常?
在 Ruby 中,可以通过 raise 语句来手动抛出异常。raise 语句后面可以跟异常类名或者异常对象。
以下是抛出一个 RuntimeError
类型的异常的例子:
rubyCopy Coderaise 'Something went wrong'
如果你希望抛出自定义异常,可以自定义一个异常类,如下所示:
rubyCopy Codeclass MyCustomException < StandardError
end
raise MyCustomException.new('Something went wrong')
如何处理异常?
在 Ruby 中,可以使用 begin...rescue...end 语句块来捕获异常并进行处理。以下是一个简单的例子:
rubyCopy Codebegin
# some code that might raise an exception
rescue => e
# handle the exception
puts "Exception: #{e.message}"
end
在这个例子中,如果在 begin 块中的代码抛出了异常,则会跳转到 rescue 块中进行处理。在 rescue 块中,我们可以通过变量 e 来访问异常信息。
常见的 Ruby 内置异常类
以下是 Ruby 中常见的内置异常类:
- StandardError
- RuntimeError
- ArgumentError
- NameError
- NoMethodError
- TypeError
实例
以下是一个简单的例子,演示了如何使用异常处理:
rubyCopy Codedef divide(x, y)
raise ArgumentError.new('Invalid argument') if y == 0
x / y
rescue => e
puts "Exception: #{e.message}"
end
puts divide(10, 0)
puts divide(10, 2)
在这个例子中,我们定义了一个名为 divide 的函数,它接收两个参数。如果第二个参数为 0,则会抛出一个 ArgumentError 类型的异常。
在主程序中,我们分别调用 divide 函数两次。第一次调用时,我们传入了 0 作为第二个参数,这将会抛出一个异常。第二次调用时,我们传入了 2 作为第二个参数,这将会返回 5。
输出结果如下:
Copy CodeException: Invalid argument
5