如何在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.message和e.backtrack用于分别打印错误消息和错误堆栈。