首页 > 编程 > Ruby > 正文

Ruby异常处理详细解析

2020-02-24 15:40:31
字体:
来源:转载
供稿:网友

  今天小编给大家分享一篇ruby.html" target="_blank">Ruby异常处理的详细解析,感兴趣的朋友跟小编一起来了解一下吧!

  异常和执行总是被联系在一起。如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的。

  如果异常发生,则程序停止。异常用于处理各种类型的错误,这些错误可能在程序执行期间发生,所以要采取适当的行动,而不至于让程序完全停止。

  Ruby 提供了一个完美的处理异常的机制。我们可以在 begin/end 块中附上可能抛出异常的代码,并使用 rescue 子句告诉 Ruby 完美要处理的异常类型。

  语法

  begin

  # -

  rescue OneTypeOfException

  # -

  rescue AnotherTypeOfException

  # -

  else

  # 其他异常

  ensure

  # 总是被执行

  end

  从 begin 到 rescue 中的一切是受保护的。如果代码块执行期间发生了异常,控制会传到 rescue 和 end 之间的块。

  对于 begin 块中的每个 rescue 子句,Ruby 把抛出的异常与每个参数进行轮流比较。如果 rescue 子句中命名的异常与当前抛出的异常类型相同,或者是该异常的父类,则匹配成功。

  如果异常不匹配所有指定的错误类型,我们可以在所有的 rescue 子句后使用一个 else 子句。

  实例

  #!/usr/bin/ruby

  begin

  file = open("/unexistant_file")

  if file

  puts "File opened successfully"

  end

  rescue

  file = STDIN

  end

  print file, "==", STDIN, "/n"

  这将产生以下结果。您可以看到,STDIN 取代了 file ,因为打开失败。

  #0xb7d16f84>0xb7d16f84>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选