如何在Ruby中引发异常?

在本文中,我们将看到如何在Ruby中引发异常?我们知道异常会干扰程序的容易进行,或者您可以说异常是在运行时发生的意外或异常事件。您必须已经看到,在begin和end块之间编写的任何代码都足以处理任何异常,但是rescue关键字告知我们ruby将要处理的异常类型。如果Ruby运行时异常在代码中创建任何错误并扰乱了程序的流程,并且这些错误类型可能导致“索引超出范围异常”,“被零错误除以此类推”,则Ruby能够处理这些异常。如果未处理这些错误,程序将停止执行。

每当有调用引发语句的调用时,指针就会转到急救块并从那里进行执行。让我们借助程序代码和语法来理解这一点。

语法:

raise exception-type "exception_message" condition

范例1:

=begin 
    Ruby program to demonstrate use of raise statement 
=end  

begin
  puts "在例外出现之前!"
  raise "异常创建成功完成!"
  puts "出现异常之后!"
end

输出:

在例外出现之前!
main.rb:7:in `<main>': 异常创建成功完成! (RuntimeError)

说明:

在上面的代码中,您可以观察到,借助于raise关键字,以及在未打印升高语句之前编写的语句,我们已经引发了一个异常,而在未经过升高语句之后编写的语句之所以执行该命令,是因为raise语句干扰或停止了程序的执行。

范例2:

=begin 
    Ruby program to demonstrate use of raise statement 
=end  

puts "Use of Raise statement. Exception Raised"

begin
    a = 50
    b = 0
    raise ZeroDivisionError.new "the value of b should not be 0" if b == 0
    print "a/b = ", (a / b) 
    rescue ZeroDivisionError => e   
        puts e.message 
        puts e.backtrace 
end

输出:

Use of Raise statement. Exception Raised
the value of b should not be 0
main.rb:10:in `<main>'

说明:

在上面的代码你可以观察到,引发异常,如果加注条件评估为真,并最终这是因为的值b为0 Ë是对象ZeroDivisionError和方法e.messagee.backtrack用于分别打印错误消息和错误堆栈。