[译]Ruby 2.6 会在begin..end 代码块中因为不写rescue 只写 else 而抛出异常[实验性Feature]...

本博客系列翻译自 Bigbinary 的 Ruby 2.6 系列, 已得到作者允许。Ruby 2.6.0-preview2 现已发布

Ruby 2.5

在Ruby2.5中,如果我们在 begin..block 代码块中用else 但不用rescue。我们会得到一个警告。 If we use else without rescue inside begin..end block in Ruby 2.5, it gives a warning.

  irb(main):001:0> begin
  irb(main):002:1>    puts "Inside begin block"
  irb(main):003:1>  else
  irb(main):004:1>    puts "Inside else block"
  irb(main):005:1> end
  (irb):5: warning: else without rescue is useless
复制代码

警告如下:warning: else without rescue is useless,告诉你else 的内容是不会执行的。

Ruby 2.6

Ruby 2.6 就会直接抛出一个异常。这个Commit 的内容就是把Warning(rb_warn0) 变成 exception(compile_error),值得注意的是,这个修改是实验性的,所以在stable 之前请不要把这个作为接下来的事实标准理解。

  irb(main):001:0>  begin
  irb(main):002:1>    puts "Inside begin block"
  irb(main):003:1>  else
  irb(main):004:1>    puts "Inside else block"
  irb(main):005:1>  end
  Traceback (most recent call last):
        1: from /usr/local/bin/irb:11:in `<main>'
  SyntaxError ((irb):3: else without rescue is useless)
复制代码

博客地址

原文地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值