📅  最后修改于: 2023-12-03 15:11:35.692000             🧑  作者: Mango
在 Ruby 中,异常处理是有很重要的地位的。在程序执行过程中如果出现异常情况(例如除以 0),程序会停止执行并抛出异常,如果没有相应的异常处理程序,则程序会崩溃。
Ruby 中,异常是一种可被捕获的信号。当一个程序出现异常时,它会生成一个异常对象并抛出(raise)它。如果异常没有被处理,则程序将终止。
Ruby 中提供了一些内置的异常类,如下:
Exception
: 是标准异常类的父类,用于表示所有异常的基类ArgumentError
: 传递给方法的参数错误IndexError
: 访问的数组或者字符越界RuntimeError
: 运行时错误SyntaxError
: 语法错误TypeError
: 对象类型不匹配ZeroDivisionError
: 除以 0当然,我们也可以自己定义异常类。
在异常处理中,常常会使用到以下几个方法:
raise(exception, message)
: 抛出一个指定的异常,同时可以添加一条错误信息。rescue (exception)
: rescue 关键字后面跟随一个异常类,表示对该异常进行捕获rescue => e
: 如果不指定异常类,则可以使用 =>
把异常对象保存到变量中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)
上述代码中,代码块 begin
到 end
中包含了可能抛出异常的代码。在 rescue
中,指定了要捕获的异常类型 ZeroDivisionError
并将异常对象保存到变量 e
中。在 ensure
中,则是无论是否产生异常,都会执行其中的代码块。
在 Ruby 中,异常处理是十分重要的一部分,掌握异常类的使用以及常见的异常方法可以帮助我们更好地进行程序开发。